How to solve the "app has stopped"?

Asked

Viewed 129 times

1

Here’s the thing, I’m setting up an app for my TCC and suddenly there’s another problem, I made a login screen, a registration screen, another to recover the password and finally one that the user can edit his password. It happens that when I click on register user appears an error "app has stopped " and soon after goes to the page that has to be directed. How can I fix this?

Code of the Login class: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); mAuth = Firebaseuth.getInstance();

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


    setContentView(R.layout.activity_login);
    inputEmail = (EditText) findViewById(R.id.email);
    inputPassword = (EditText) findViewById(R.id.password);
    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
    mAuth = 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) {
            String email = inputEmail.getText().toString();
            final String password = inputPassword.getText().toString();

            if (TextUtils.isEmpty(email)) {
                Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show();
                return;
            }

            if (TextUtils.isEmpty(password)) {
                Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show();

                return;
            }

            progressBar.setVisibility(View.VISIBLE);

            //authenticate user
            mAuth.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 {
                                Intent homeIntent = new Intent(LoginActivity.this, Home1.class);
                                startActivity(homeIntent);


                            }
                        }
                    });
        }
    });
}



}

Code of the resetpassword class:

public class Resetpasswordactivity extends Appcompatactivity {

private EditText inputEmail;
private Button btnReset, btnback;
private FirebaseAuth mAuth;
private ProgressBar progressBar;
private FirebaseAuth.AuthStateListener mAuthListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_reset_password);
    inputEmail = (EditText) findViewById(R.id.email);
    btnReset = (Button) findViewById(R.id.btn_reset_password);
    btnback = (Button) findViewById(R.id.btn_back);
    progressBar = (ProgressBar) findViewById(R.id.progressBar);

    mAuth = FirebaseAuth.getInstance();
    btnback.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });

    btnReset.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String email = inputEmail.getText().toString().trim();

            if (TextUtils.isEmpty(email)) {
                Toast.makeText(getApplication(), "Enter your registered email id", Toast.LENGTH_SHORT).show();
                return;
            }

            progressBar.setVisibility(View.VISIBLE);
            mAuth.sendPasswordResetEmail(email)
                    .addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {
                            if (task.isSuccessful()) {
                                Toast.makeText(ResetPasswordActivity.this, "Nós te enviamos instrunções para recuperar sua senha!", Toast.LENGTH_SHORT).show();
                            } else {
                                Toast.makeText(ResetPasswordActivity.this, "Falha ao enviar email de recuperação!", Toast.LENGTH_SHORT).show();

                            }

                            progressBar.setVisibility(View.GONE);
                        }
                    });
        }
    });
}

}

Code of the signup class:

public class Signupactivity extends Appcompatactivity {

private EditText inputEmail, inputPassword;     //hit option + enter if you on mac , for windows hit ctrl + enter
private Button btnSignIn, btnSignUp, btnResetPassword;
private ProgressBar progressBar;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_signup);
    //Get Firebase auth instance
    mAuth = FirebaseAuth.getInstance();
    btnSignIn = (Button) findViewById(R.id.sign_in_button);
    btnSignUp = (Button) findViewById(R.id.sign_up_button);
    inputEmail = (EditText) findViewById(R.id.email);
    inputPassword = (EditText) findViewById(R.id.password);
    progressBar = (ProgressBar) findViewById(R.id.progressBar);
    btnResetPassword = (Button) findViewById(R.id.btn_reset_password);

    btnResetPassword.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(SignupActivity.this,MainActivity.class));
        }
    });
    btnSignIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();
        }
    });
    btnSignUp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String email = inputEmail.getText().toString().trim();
            String password = inputPassword.getText().toString().trim();

            if (TextUtils.isEmpty(email)) {
                Toast.makeText(getApplicationContext(), "Enter email address!", Toast.LENGTH_SHORT).show();
                return;
            }

            if (TextUtils.isEmpty(password)) {
                Toast.makeText(getApplicationContext(), "Enter password!", Toast.LENGTH_SHORT).show();
                return;
                }

            if(password.length() <6){

            Toast.makeText(getApplicationContext(),"Digite uma senha com mais de 6 digitos",Toast.LENGTH_SHORT).show();
                return;
        }


                progressBar.setVisibility(View.VISIBLE);
                //create user
                mAuth.createUserWithEmailAndPassword(email, password)
                        .addOnCompleteListener(SignupActivity.this, new OnCompleteListener<AuthResult>() {
                            @Override
                            public void onComplete(@NonNull Task<AuthResult> task) {
                                Toast.makeText(SignupActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
                                progressBar.setVisibility(View.GONE);
                                // 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.
                                if (!task.isSuccessful()) {
                                    Toast.makeText(SignupActivity.this, "Authentication failed." + task.getException(),
                                            Toast.LENGTH_SHORT).show();
                                } else {
                                    startActivity(new Intent(SignupActivity.this, MainActivity[].class));
                                }
                            }
                        });

        }
    });
}

@Override
protected void onResume() {
    super.onResume();
    progressBar.setVisibility(View.GONE);
}

}

And finally the code of the class where he can change his password (set as Main)

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //get firebase auth instance mAuth = Firebaseuth.getInstance(); email = (Textview) findViewById(R.id.useremail);

    //get current user
    final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    setDataToView(user);

    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if (user == null) {
                // user auth state is changed - user is null
                // launch login activity
                startActivity(new Intent(MainActivity.this, LoginActivity.class));
                finish();
            }
        }
    };
    btnChangePassword = (Button) findViewById(R.id.change_password_button);

    btnRemoveUser = (Button) findViewById(R.id.remove_user_button);

    changePassword = (Button) findViewById(R.id.changePass);
    remove = (Button) findViewById(R.id.remove);
    signOut = (Button) findViewById(R.id.sign_out);

    oldEmail = (EditText) findViewById(R.id.old_email);

    password = (EditText) findViewById(R.id.password);
    newPassword = (EditText) findViewById(R.id.newPassword);

    oldEmail.setVisibility(View.GONE);

    password.setVisibility(View.GONE);
    newPassword.setVisibility(View.GONE);

    changePassword.setVisibility(View.GONE);

    remove.setVisibility(View.GONE);

    progressBar = (ProgressBar) findViewById(R.id.progressBar);

    if (progressBar != null) {
        progressBar.setVisibility(View.GONE);
    }

    btnChangePassword.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            oldEmail.setVisibility(View.GONE);

            password.setVisibility(View.GONE);
            newPassword.setVisibility(View.VISIBLE);

            changePassword.setVisibility(View.VISIBLE);

            remove.setVisibility(View.GONE);
        }
    });

    changePassword.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            progressBar.setVisibility(View.VISIBLE);
            if (user != null && !newPassword.getText().toString().trim().equals("")) {
                if (newPassword.getText().toString().trim().length() < 6) {
                    newPassword.setError("Senha muito curta, entre com pelo menos 6 digitos");
                    progressBar.setVisibility(View.GONE);
                } else {
                    user.updatePassword(newPassword.getText().toString().trim())
                            .addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                    if (task.isSuccessful()) {
                                        Toast.makeText(MainActivity.this, "Senha atualizada,entre com sua nova senha!", Toast.LENGTH_SHORT).show();
                                        signOut();
                                        progressBar.setVisibility(View.GONE);
                                    } else {
                                        Toast.makeText(MainActivity.this, "Falha ao atualizar senha!", Toast.LENGTH_SHORT).show();
                                        progressBar.setVisibility(View.GONE);
                                    }
                                }
                            });
                }
            } else if (newPassword.getText().toString().trim().equals("")) {
                newPassword.setError("Enter password");
                progressBar.setVisibility(View.GONE);
            }
        }
    });

    btnRemoveUser.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            progressBar.setVisibility(View.VISIBLE);
            if (user != null) {
                user.delete()
                        .addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                if (task.isSuccessful()) {
                                    Toast.makeText(MainActivity.this, "Seu perfil foi deletado :( Crie uma conta agora!", Toast.LENGTH_SHORT).show();

                                    startActivity(new Intent(MainActivity.this, SignupActivity.class));
                                    finish();
                                    progressBar.setVisibility(View.GONE);
                                } else {
                                    Toast.makeText(MainActivity.this, "Failed to delete your account!", Toast.LENGTH_SHORT).show();
                                    progressBar.setVisibility(View.GONE);
                                }
                            }
                        });
            }
        }
    });
    signOut.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            signOut();
        }
    });
}

@SuppressLint("SetTextI18n")
private void setDataToView(FirebaseUser user) {

    email.setText("User Email: " + user.getEmail());


}

// this listener will be called when there is change in firebase user session
FirebaseAuth.AuthStateListener authListener = new FirebaseAuth.AuthStateListener() {
    @SuppressLint("SetTextI18n")
    @Override
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
        FirebaseUser user = firebaseAuth.getCurrentUser();
        if (user == null) {
            // user auth state is changed - user is null
            // launch login activity
            startActivity(new Intent(MainActivity.this, LoginActivity.class));
            finish();
        } else {
            setDataToView(user);

        }
    }


};

//sign out method
public void signOut() {
    mAuth.signOut();

// this Listener will be called when there is change in firebase user Session Firebaseuth.Authstatelistener authListener = new Firebaseuth.Authstatelistener() { @Override public void onAuthStateChanged(@Nonnull Firebaseuth firebaseAuth) { Firebaseuser user = firebaseAuth.getCurrentUser(); if (user == null) { // user auth state is changed - user is null // Launch login Activity startActivity(new Intent(Mainactivity.this, Loginactivity.class)); Finish(); } } }; }

@Override
protected void onResume() {
    super.onResume();
    progressBar.setVisibility(View.GONE);
}

@Override
public void onStart() {
    super.onStart();
    mAuth.addAuthStateListener(authListener);
}

@Override
public void onStop() {
    super.onStop();
    if (authListener != null) {
        mAuth.removeAuthStateListener(authListener);
    }
}

}

Sorry about the code size.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.