向片段中的Edittext添加验证
问题描述:
我试图在Fragment
中添加验证EditText
,但我的应用程序崩溃。我试图用getActivity()
代替这个问题仍然面临同样的问题。向片段中的Edittext添加验证
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Patterns;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.basgeekball.awesomevalidation.AwesomeValidation;
import com.basgeekball.awesomevalidation.ValidationStyle;
public class TestFragment extends Fragment implements View.OnClickListener{
EditText ET_input_first_name, ET_input_last_name, ET_input_email, ET_input_contact, ET_comments;
String first_name, last_name, email , contact , comments;
private Button buttonSubmit;
private AwesomeValidation awesomeValidation;
public TestFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = null;
view = inflater.inflate(R.layout.fragment_test, container, false);
ET_input_first_name = (EditText)view.findViewById(R.id.input_first_name);
ET_input_last_name = (EditText)view.findViewById(R.id.input_last_name);
ET_input_email = (EditText)view.findViewById(R.id.input_email);
ET_input_contact = (EditText)view.findViewById(R.id.input_contact);
ET_comments = (EditText)view.findViewById(R.id.comments);
awesomeValidation = new AwesomeValidation(ValidationStyle.BASIC);
buttonSubmit = (Button)view.findViewById(R.id.btn_test_drive);
//adding validation to edittexts
awesomeValidation.addValidation(this , R.id.input_first_name, "^[A-Za-z\\s]{1,}[\\.]{0,1}[A-Za-z\\s]{0,}$", R.string.nameerror);
awesomeValidation.addValidation(this, R.id.input_last_name, "^[A-Za-z\\s]{1,}[\\.]{0,1}[A-Za-z\\s]{0,}$", R.string.nameerror);
awesomeValidation.addValidation(this, R.id.input_email, Patterns.EMAIL_ADDRESS, R.string.nameerror);
awesomeValidation.addValidation(this, R.id.input_contact, "^[2-9]{2}[0-9]{8}$", R.string.nameerror);
buttonSubmit.setOnClickListener(this);
return view;
}
private void submitForm() {
if (awesomeValidation.validate()) {
Toast.makeText(getActivity(), "Validation Successfull", Toast.LENGTH_LONG).show();
}
}
@Override
public void onClick(View view) {
submitForm();
}
}
答
要做到这一点有2种方式:使用此代码片段
1)EditText et = getActivity().findViewById(R.id.editText)
2)使你的EditText public static
在你的活动,初始化它只有在那里。然后在片段中使用,只需写YourActivity.edittext.getText().toString()
。它将工作
答
awesomeValidation.addValidation(ET_input_first_name, "^[A-Za-z\\s]{1,}[\\.]{0,1}[A-Za-z\\s]{0,}$", "this is error message");
它的工作完美花花公子
发表您的logcat –
呀,如果你需要帮助调试内核崩溃添加您的堆栈跟踪。 – npace
使用我的手机来调试应用程序,如何从中获取logcat。我在Activity的工作中尝试了上述方法,但是在其片段中它已经崩溃了。 –