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