Все намерения, ведущие к mainactivity?

#java #android #android-intent

#java #Android #android-намерение

Вопрос:

Вот код для одного из моих Java-классов Android studio:

  Button button1; //log in
 Button button2; //sign up

    public View.OnClickListener button1Listener = new View.OnClickListener() {
        public void onClick (View view){

            Intent loginActivity = new Intent(getApplicationContext(), LoginActivity.class);
            startActivity(loginActivity);


        }};

    public View.OnClickListener button2Listener = new View.OnClickListener() {
        public void onClick (View view){
            Intent signupActivity = new Intent(getApplicationContext(), MainActivity.class);
            startActivity(signupActivity);


        }};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_front_page);
    button1 = (Button) findViewById(R.id.button3);
    button2 = (Button) findViewById(R.id.button4);
    button1.setOnClickListener(button1Listener);
    button2.setOnClickListener(button2Listener);
}
  

Основная активность:

 public class MainActivity extends AppCompatActivity {

    EditText editText;
    EditText editText2;
    Button button, button2;
    public FirebaseAuth auth;
    public FirebaseAuth.AuthStateListener authlistener;
    String email, pass;
    ProgressBar bar;

    public View.OnClickListener buttonListener = new View.OnClickListener() {
        public void onClick (View view){
            email = editText.getText().toString().trim();
            pass = editText2.getText().toString().trim();
            createUser();

        }};

    public View.OnClickListener backButtonListener = new View.OnClickListener() {
        public void onClick (View view){
            Intent backtoMain = new Intent(getApplicationContext(), FrontPageActivity.class);
            startActivity(backtoMain);

        }};


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText)findViewById(R.id.editText);
        editText2 = (EditText)findViewById(R.id.editText2);
        button = (Button)findViewById(R.id.button2);
        auth = FirebaseAuth.getInstance();
        button.setOnClickListener(buttonListener);
        bar = (ProgressBar)findViewById(R.id.progressBar2);
        bar.setVisibility(View.INVISIBLE);
        button2 = (Button)findViewById(R.id.button5);
        button2.setOnClickListener(backButtonListener);
    }

    public void createUser(){
        bar.setVisibility(View.VISIBLE);

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

                        if(task.isSuccessful()){
                            Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_LONG).show();
                            bar.setVisibility(View.INVISIBLE);
                        } else{
                            Toast.makeText(getApplicationContext(), "Failed, Password must be >=6 characters", Toast.LENGTH_LONG).show();
                            bar.setVisibility(View.INVISIBLE);
                        }

                    }
                });


    }
}
  

Активность входа в систему:

 public class LoginActivity extends AppCompatActivity {

    EditText editText;
    EditText editText2;
    Button button;
    public FirebaseAuth Auth = FirebaseAuth.getInstance();
    public FirebaseAuth.AuthStateListener authlistener;
    String email, pass;
    ProgressBar bar;

    public View.OnClickListener buttonListener = new View.OnClickListener() {
        public void onClick (View view){
            email = editText.getText().toString().trim();
            pass = editText2.getText().toString().trim();
            logInUser();

        }};


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText)findViewById(R.id.editText);
        editText2 = (EditText)findViewById(R.id.editText2);
        button = (Button)findViewById(R.id.button2);
        Auth = FirebaseAuth.getInstance();
        button.setOnClickListener(buttonListener);
        bar = (ProgressBar)findViewById(R.id.progressBar2);
        bar.setVisibility(View.INVISIBLE);

        authlistener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) {
                    // User is signed in

                } else {
                    // User is signed out

                }
                // ...
            }
        };
        // ...
    }

    @Override
    public void onStart() {
        super.onStart();
        Auth.addAuthStateListener(authlistener);
    }

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

    public void logInUser(){
        bar.setVisibility(View.VISIBLE);

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

                        if(task.isSuccessful()) {

                            Intent loggedInActivity = new Intent(getApplicationContext(), Loggedin.class);
                            startActivity(loggedInActivity);

                        }
                        else{

                            Toast.makeText(getApplicationContext(), "There was an error, try again", Toast.LENGTH_SHORT).show();
                        }


                    }
                });


    }
}
  

Итак, у меня есть 2 кнопки: «вход» и «регистрация», и обе должны приводить к разным намерениям. sign-up Ведет к mainactivity.class тому, что в основном является страницей регистрации.

Однако, несмотря на то, что я сопоставил button1 класс loginAcitivty, он все равно переходит к MainActivity.class . Почему это происходит?

Комментарии:

1. показать остальную часть кода

2. Может быть, обе кнопки имеют одинаковый набор прослушивателей?

3. Убедитесь, что кнопки не имеют одинакового прослушивателя

4. @AdamVarhegyi, они этого не делают, я обновил код.

5. @PavneetSingh, я добавил слушателя и все остальные классы тоже

Ответ №1:

Проверьте LoginActivity , что вы установили setContentView(R.layout.activity_main); , что это раздувает макет содержимого activity_main

Макет, который вы раздуваете в обоих действиях, одинаков..

Комментарии:

1. Еще одна причина правильно назвать элемент в макетах. Это вызвало бы триггер и исключение во время findView

2. Это потому, что он не может найти идентификатор, проверьте идентификатор, существует ли он в макете или нет….

3. Наоборот … все идентификаторы присутствуют в обоих макетах, потому что они являются name button , editText , editText2 , … так что все работает отлично, за исключением того, что он работает не на том экране. Вот почему он думал, что его намерение движется в неправильном направлении. Исключений не было.

Ответ №2:

измените свой код следующим образом,

 Button button1; //log in
    Button button2; //sign up

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

            Intent loginActivity = new Intent(getApplicationContext(), LoginActivity.class);
            startActivity(loginActivity);


        }};

    button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            Intent signupActivity = new Intent(getApplicationContext(), MainActivity.class);
            startActivity(signupActivity);


        }};
  

Комментарии:

1. Я могу это сделать, но почему у моего способа есть проблема?

2. проблема с вашими слушателями, и в вашем коде вы не находите представление для прослушивания.

3. @KiranDsouza не находит представление? Кнопка? Тогда хорошо .setOnClickListener было бы создать исключение…

4. вам нужен объект View макета и вызовите для него findViewById()