EDITTEXT设置错误



如果用户在没有填充文本字段的情况下登录按钮,则试图在我的编辑文本上设置错误。我尝试了几个代码,但没有任何帮助。每次我运行时,应用程序都在崩溃。

这是代码

    public class LoginFragment extends Fragment {
private ProgressDialog progressDialog;
private FirebaseAuth firebaseAuth;
EditText email,password;
Button login;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.activity_login_fragment, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    firebaseAuth = firebaseAuth.getInstance();
    progressDialog = new ProgressDialog(getActivity());
    login = (Button)getActivity().findViewById(R.id.loginBtn);
    email = (EditText)getActivity().findViewById(R.id.regEmailEt);
    password = (EditText)getActivity().findViewById(R.id.regPasswordEt);

    login.setOnClickListener(new View.OnClickListener() {
        String email1;
        String password1;
            @Override
            public void onClick(View v) {
                if(email.getText().length() == 0){
                    email.setError("Please enter your email");
                }
                if(password.getText().length() == 0){
                    password.setError("Please enter your password");
                }
                     email1 = email.getText().toString();
                     password1 = password.getText().toString();
                progressDialog.setMessage("Processing...");
                progressDialog.show();

                   FirebaseAuth.getInstance().createUserWithEmailAndPassword(email1, password1)
                           .addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                               @Override
                               public void onComplete(Task<AuthResult> task) {
                                   if (task.isSuccessful()) {
                                       startActivity(new Intent(getActivity(), MainActivity.class));
                                       progressDialog.dismiss();
                                   }
                               }
                           }).addOnFailureListener(new OnFailureListener() {
                       @Override
                       public void onFailure(Exception e) {
                           Toast.makeText(getActivity(), "Error:" + e.getMessage(), Toast.LENGTH_LONG).show();
                           progressDialog.dismiss();
                       }
                   });
               }
        });
       }
   }

按下登录按钮时,它应活跃setOnClickListener。在那里,我想检查文本字段是否为空,如果它们是空的,所以我想在TextEdit中seterror。否则,我希望它继续下去。我很确定我的代码错了,所以我需要你的建议。

崩溃日志

     02-18 19:32:46.012 11162-11162/? E/AndroidRuntime: FATAL EXCEPTION: main
                                               Process: com.world.bolandian.whereareyou, PID: 11162
                                               java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference
                                                   at com.world.bolandian.whereareyou.LoginFragment$1.onClick(LoginFragment.java:52)
                                                   at android.view.View.performClick(View.java:5207)
                                                   at android.view.View$PerformClick.run(View.java:21177)
                                                   at android.os.Handler.handleCallback(Handler.java:739)
                                                   at android.os.Handler.dispatchMessage(Handler.java:95)
                                                   at android.os.Looper.loop(Looper.java:148)
                                                   at android.app.ActivityThread.main(ActivityThread.java:5441)
                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

行52 第52行是 -> if(email.getText()。length()== 0)

 String email1;
    String password1;
        @Override
        public void onClick(View v) {
            if(email.getText().length() == 0){
                email.setError("Please enter your email");
            }
            if(password.getText().length() == 0){
                password.setError("Please enter your password");
            }

我会实现一个.tostring,并将其放入单独的方法中,并让您的单击呼叫该方法。

我可以工作,所以我知道它是可行的。

@Override
public void onClick(View v) {
  String email, password;
    email = emailfield.getText().toString();
    password = passfield.getText().toString();
    if(!(email.isEmpty())) {
        if(!(password.isEmpty())) {
            //run your process here
        } else {
            passfield.setError("Password Field Empty");
        }
    } else {
        emailfield.setError("Email Empty");
    }
}

您应该检查空条件:

if (editText.getText().toString().trim().length() = 0) {
   //editText is Empty
   editText.setError("Your message");
   return;   //add this so rest of the code will not execute
}

这是另一种方法:

 EditText etName = (EditText) findViewById(R.id.etname);
String strName = etName.getText().toString();
 if(TextUtils.isEmpty(strName)) {
    etName.setError("Your message");
    return;
 }

您也应该将onCreatView()更改为:

 View view;
 @Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.activity_login_fragment, container, false);
    login = (Button)view.findViewById(R.id.loginBtn);
    email = (EditText)view.findViewById(R.id.regEmailEt);
    password = (EditText)view.findViewById(R.id.regPasswordEt);
    return view;
}

最新更新