向片段中的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(); 
    } 
} 
+0

发表您的logcat –

+0

呀,如果你需要帮助调试内核崩溃添加您的堆栈跟踪。 – npace

+0

使用我的手机来调试应用程序,如何从中获取logcat。我在Activity的工作中尝试了上述方法,但是在其片段中它已经崩溃了。 –

要做到这一点有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"); 

它的工作完美花花公子