Исключение нулевого указателя при пустых полях входа в систему - Firebase - PullRequest
0 голосов
/ 22 мая 2018

У меня есть этот код, где пользователь вводит свои учетные данные и входит в систему.

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 (email, pass) метод, как вы видите выше.Просто для целей валидации я хочу иметь тост, в котором говорится, что вы должны заполнить поля электронной почты и пароль.Как и сейчас, я получаю исключение, когда нажимаю кнопку входа.Как это исправить?

Это исключение.

 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 голосов
/ 22 мая 2018

Обнаружил вашу ошибку, следующее:

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

должно быть &&, а не ||:

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

Вы хотите, чтобы оба не были нулевыми, чтобы вызвать ваш логин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...