登录字段为空时出现空指针异常 - Firebase

时间:2018-05-22 14:22:53

标签: android firebase firebase-realtime-database firebase-authentication

我有这个代码,用户输入他的凭据并登录。

public class LoginActivity extends AppCompatActivity {

private static final String TAG = LoginActivity.class.getSimpleName();
private FirebaseAuth mAuth;
private Toolbar mToolbar;
private TextInputEditText mLoginEmail;
private TextInputEditText mLoginPassword;

private Button mLoginBtn;
private Button mForgotPass;

private ProgressDialog mProgress;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    mToolbar = findViewById(R.id.login_toolbar);
    setSupportActionBar(mToolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setTitle("Login");


    mAuth = FirebaseAuth.getInstance();

    mProgress = new ProgressDialog(this);


    mLoginEmail = (TextInputEditText)findViewById(R.id.login_email);
    mLoginPassword = (TextInputEditText)findViewById(R.id.login_password);
    mLoginBtn = (Button)findViewById(R.id.login_create_btn);

    mLoginBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            String email = mLoginEmail.getText().toString();
            String pass = mLoginPassword.getText().toString();

            if(!TextUtils.isEmpty(email) || !TextUtils.isEmpty(pass)){

                mProgress.setTitle("Logging in");
                mProgress.setMessage("Please wait while we check your credentials");
                mProgress.setCanceledOnTouchOutside(false);
                mProgress.show();

                loginUser(email,pass);

            }

        }
    });

    mForgotPass = (Button)findViewById(R.id.login_forgot_password);
    mForgotPass.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(LoginActivity.this,ForgotPasswordActivity.class);
            startActivity(i);
        }
    });

}

private void loginUser(final String email, final String pass) {

    mAuth.signInWithEmailAndPassword(email,pass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {

                if (task.isSuccessful()) {
                    mProgress.dismiss();
                    sendToMain();
                } else {
                    mProgress.hide();

                    Toast.makeText(LoginActivity.this, "Can not login", Toast.LENGTH_SHORT).show();
                    Log.d(TAG, String.valueOf(task.getException()));
                }
            }

    });
}

private void sendToMain() {
    Intent mainIntent = new Intent(LoginActivity.this,MainActivity.class);
    mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(mainIntent);
    finish();
}

}

要实现登录程序,请按上面的说法调用 signInWithEmailAndPassword(电子邮件,通行证)方法。仅仅为了验证目的,我想要祝酒,你应该填写电子邮件和密码字段。就像现在一样,当我点击登录按钮时出现异常。如何解决?

这是例外。

 at com.google.android.gms.common.internal.zzbq.zzgm(Unknown Source)
    at com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(Unknown Source)
    at theo.tziomakas.news.LoginActivity.loginUser(LoginActivity.java:90)
    at theo.tziomakas.news.LoginActivity.access$300(LoginActivity.java:22)
    at theo.tziomakas.news.LoginActivity$1.onClick(LoginActivity.java:70)

谢谢,

西奥。

1 个答案:

答案 0 :(得分:1)

发现您的错误,如下:

if(!TextUtils.isEmpty(email) || !TextUtils.isEmpty(pass))

应该是&amp;&amp;而不是||:

if(!TextUtils.isEmpty(email) && !TextUtils.isEmpty(pass))

您希望两者都不为空来呼叫您的登录信息。

相关问题