0

Quiero que solo el usuario1 pueda entrar a Usuario1.class pero me da error... cuando ingreso con los otros usuarios no da error porque me redireccionan a InicioActivity al no cumplir con los requisitos del if...

Este es el codigo

   public class LoginActivity extends AppCompatActivity {

    private EditText inputEmail, inputPassword;
    TextView emailadmin, passadmin;
    private FirebaseAuth auth;
    private ProgressBar progressBar;
    private Button btnSignup, btnLogin, btnReset;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
         //Get Firebase auth instance
        auth = FirebaseAuth.getInstance();

        if (auth.getCurrentUser() != null) {
            startActivity(new Intent(LoginActivity.this, InicioActivity.class));
            finish();
        }

        setContentView(R.layout.activity_login);
        inputEmail = (EditText) findViewById(R.id.email);
        inputPassword = (EditText) findViewById(R.id.password);
        emailadmin = (TextView) findViewById(R.id.emailadmin);
        passadmin = (TextView) findViewById(R.id.passadmin);
        emailadmin.setVisibility(View.INVISIBLE);
        passadmin.setVisibility(View.INVISIBLE);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);
        btnSignup = (Button) findViewById(R.id.btn_signup);
        btnLogin = (Button) findViewById(R.id.btn_login);
        btnReset = (Button) findViewById(R.id.btn_reset_password);

        //Get Firebase auth instance
        auth = FirebaseAuth.getInstance();

        btnSignup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(LoginActivity.this, SignupActivity.class));
            }
        });

        btnReset.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(LoginActivity.this, ResetPasswordActivity.class));
            }
        });

        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String email = inputEmail.getText().toString();
                final String password = inputPassword.getText().toString();
                emailadmin.setText(email);
                passadmin.setText(password);

                if (TextUtils.isEmpty(email)) {
                    Toast.makeText(getApplicationContext(), "Ingresa tu correo electrónico", Toast.LENGTH_SHORT).show();
                    return;
                }

                if (TextUtils.isEmpty(password)) {
                    Toast.makeText(getApplicationContext(), "Ingresa tu contraseña", Toast.LENGTH_SHORT).show();
                    return;
                }

                progressBar.setVisibility(View.VISIBLE);

                //authenticate user

                auth = FirebaseAuth.getInstance();
                auth.signInWithEmailAndPassword(email, password)
                        .addOnCompleteListener(LoginActivity.this, new OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {
                                // If sign in fails, display a message to the user. If sign in succeeds
                                // the auth state listener will be notified and logic to handle the
                                // signed in user can be handled in the listener.
                                progressBar.setVisibility(View.GONE);
                                if (!task.isSuccessful()) {
                                    // there was an error
                                    if (password.length() < 6) {
                                        inputPassword.setError(getString(R.string.minimum_password));
                                    } else {
                                        Toast.makeText(LoginActivity.this, getString(R.string.auth_failed), Toast.LENGTH_LONG).show();
                                    }
                                } else {
                                    if ((email.equals("usuario1@gmail.com")) && (password.equals("usuario123"))) {
                                        Intent intent = new Intent(LoginActivity.this, Usuario1.class);
                                        startActivity(intent);
                                        finish();
                                } else {
                                    Intent intent = new Intent(LoginActivity.this, InicioActivity.class);
                                    startActivity(intent);
                                    finish();
                                }
                            }
                        }
            });
            }
        });
    }
}

Y el Logcat es este

    E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.matias.finalcode, PID: 27550
                  java.lang.NullPointerException: Attempt to invoke interface method 'void com.google.firebase.auth.FirebaseAuth$AuthStateListener.onAuthStateChanged(com.google.firebase.auth.FirebaseAuth)' on a null object reference
                      at com.google.firebase.auth.zzi.run(Unknown Source)
                      at android.os.Handler.handleCallback(Handler.java:739)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:135)
                      at android.app.ActivityThread.main(ActivityThread.java:5258)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at java.lang.reflect.Method.invoke(Method.java:372)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
I/Process: Sending signal. PID: 27550 SIG: 9
Application terminated.
  • Mira esto: https://es.stackoverflow.com/q/42977/324.. pareceria ser que email o password son nulos – gbianchi Mar 29 '18 at 21:08
  • aunque podria venir de mas arriba el error.. porque decis que te da en esa linea? – gbianchi Mar 29 '18 at 21:09
  • @gbianchi Porque acabo de agregar esa linea y me da error, antes no me daba. Incluso cuando ingreso con otras cuentas no me da error y la app funciona normal. Sólo cuando ingreso con el usuario1@gmail.com y contraseña usuario123 me da error. – Matías Nicolás Núñez Rivas Mar 29 '18 at 21:10
  • bueno algo es nulo en ese caso. deberias depurar la aplicacion para ver que campo es nulo en ese caso. mira la pregunta que te puse como link – gbianchi Mar 29 '18 at 21:11
  • @gbianchi tiene lógica lo que sale ahí... me fijaré mejor en el dato que estoy recibiendo... gracias! – Matías Nicolás Núñez Rivas Mar 29 '18 at 21:21
  • Prueba a poner el listener así: `auth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener() {` – A. Cedano Mar 29 '18 at 22:02
  • @A.Cedano No me funciono con esa solución :/ – Matías Nicolás Núñez Rivas Mar 29 '18 at 22:21
  • ¿`auth` es una referencia válida a una instancia de `Firebase`? ¿Seguro que la estás instanciando correctamente? ¿Puedes indicar el código donde creas la variable `auth`? – A. Cedano Mar 29 '18 at 22:25
  • @A.Cedano private FirebaseAuth auth; – Matías Nicolás Núñez Rivas Mar 29 '18 at 22:30
  • Claro, pero no estás obteniendo ninguna instancia, o sea, algo así: `auth = FirebaseAuth.getInstance();` colocado **antes de este código**: `auth.signInWithEmailAndPassword(email, password) ` – A. Cedano Mar 29 '18 at 22:38
  • @A.Cedano Puse el código pero sigue dando error... Subiré el código completo para que veas como está y actualizare el Logcat. Gracias por la ayuda! – Matías Nicolás Núñez Rivas Mar 29 '18 at 23:07
  • Creas la instancia tres veces, con una sola vez bastará. Puede que ese no sea el error, pero corrige eso por lo pronto. – A. Cedano Mar 29 '18 at 23:30
  • Para depurar que no sea problema de las variables `email, password`. ¿Si cambias esto `if ((email.equals("usuario1@gmail.com")) && (password.equals("usuario123"))) {` por algo como: `if (1==1) { //código` funciona? – A. Cedano Mar 29 '18 at 23:46
  • @A.Cedano Acabo de darme cuenta con el ejemplo que me diste que no funciona el Intent, me redirecciona hacia mi InicioActivity y no va hacia Usuario1.class. Qué problema puede ser? Ya tengo agregada la actividad en el manifest y todo... – Matías Nicolás Núñez Rivas Mar 30 '18 at 00:05
  • Puede que haya alguna confusión en ese reguero de `if ... else...` que tienes en esa parte. Revisa bien esa lógica, porque desde un principio los vi algo extraños, quizá el código se pueda *aclarar* mejor de otra manera... – A. Cedano Mar 30 '18 at 00:11

0 Answers0