1

I want to give validation to EditText using AwesomeValidation inside Fragment. On button click the validation should be check but app stops on button click and giving error like this: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference

Here is my Code:

AwesomeValidation awesomeValidation;
edtxtfullname = (EditText) view.findViewById(R.id.edtxtfullname);
btnNext = (Button) view.findViewById(R.id.btnNext);
awesomeValidation = new AwesomeValidation(ValidationStyle.BASIC);
awesomeValidation.addValidation(getActivity(),R.id.edtxtfullname, "^[A-Za-z\\s]{1,}[\\.]{0,1}[A-Za-z\\s]{0,}$", R.string.nameerror);
btnNext.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if (awesomeValidation.validate())
        {
            Toast.makeText(getActivity(), "Validation Successfull", Toast.LENGTH_LONG).show();
        }
    }
});
return view;
Sneh Pandya
  • 7,230
  • 6
  • 32
  • 49
Monali
  • 270
  • 1
  • 5
  • 16

2 Answers2

1

Update your code like this:

    ..
    edtxtfullname = (EditText) view.findViewById(R.id.edtxtfullname);
            btnNext = (Button) view.findViewById(R.id.btnNext);
    awesomeValidation = new AwesomeValidation(ValidationStyle.BASIC);
    //directly pass EditText 
     awesomeValidation.addValidation(edtxtfullname, "^[A-Za-z\\s]{1,}[\\.]{0,1}[A-Za-z\\s]{0,}$", R.string.nameerror);
    btnNext.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (awesomeValidation.validate())
                    {
                        Toast.makeText(getActivity(), "Validation Successfull", Toast.LENGTH_LONG).show();
                    }
                }
            });
            return view;

Try this it'll solve your problem.

HassanUsman
  • 1,485
  • 1
  • 17
  • 34
  • No, this is not a right way addvalidation method takes 4 parameters like awesomevalidation.addvalidation(context,int,string,int); – Monali Nov 01 '17 at 06:29
  • This is a right way see here.. https://github.com/thyrlian/AwesomeValidation it mentions `mAwesomeValidation.addValidation(editText, "regex", "Error info");` – HassanUsman Nov 01 '17 at 06:34
0

I found solution to my question. What i have done is as following:

awesomeValidation = new AwesomeValidation(ValidationStyle.BASIC);
 @Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    awesomeValidation.addValidation(getActivity(),R.id.edtxtfullname, "^[A-Za-z\\s]{1,}[\\.]{0,1}[A-Za-z\\s]{0,}$", R.string.nameerror);
    btnNext.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (awesomeValidation.validate())
            {
                Toast.makeText(getActivity(), "Validation Successfull", Toast.LENGTH_LONG).show();
            }
        }
    });
}
Monali
  • 270
  • 1
  • 5
  • 16