К сожалению, MyBooks остановлен - PullRequest
0 голосов
/ 01 ноября 2019

Когда я регистрируюсь после этого, я перехожу на следующую страницу активности, которая является HomeActivity, которая отображает приветствие ... Вы вошли в систему, и когда я нажал кнопку GO AHEAD, происходит ошибка, которая, к сожалению, MyBooks остановлена. Почему это так? Почему происходит эта ошибка? Есть ли какая-либо ошибка в создании Intent ..?

Это мой HomeActivity.java

 package com.example.easylearn;
 import androidx.appcompat.app.AppCompatActivity;

 import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Button;

 import com.google.firebase.auth.FirebaseAuth;

 public class HomeActivity extends AppCompatActivity {

  Button btngo;
  FirebaseAuth mFirebaseAuth;
  private FirebaseAuth.AuthStateListener mAuthStateListener;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_home);
     btngo = findViewById(R.id.go);

     btngo.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             Intent intgo = new 
    Intent(HomeActivity.this,BranchActivity.class);
             startActivity(intgo);
         }
     });
    }
    }

Это мой BranchActivity.java

    package com.example.easylearn;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.firebase.auth.FirebaseUser;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;

public class BranchActivity extends AppCompatActivity {

    Button CSE;
    Button ME;
    Button Civil;
    Button EE;
    FirebaseAuth mFirebaseAuth;
    private FirebaseAuth.AuthStateListener mAuthStateListener;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_branch);

        mFirebaseAuth = FirebaseAuth.getInstance();
        CSE = findViewById(R.id.button);
        ME = findViewById(R.id.button4);
        Civil = findViewById(R.id.button3);
        EE = findViewById(R.id.button5);

        CSE.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intCSE = new Intent(BranchActivity.this,YearActivity.class);
                startActivity(intCSE);
            }
        });

        ME.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intME = new Intent(BranchActivity.this,YearActivity.class);
                startActivity(intME);
            }
        });

        EE.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intEE = new Intent(BranchActivity.this,YearActivity.class);
                startActivity(intEE);
            }
        });

        Civil.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intCivil = new 
         Intent(BranchActivity.this,YearActivity.class);
                startActivity(intCivil);
            }
        });
        }

       @Override
       protected void onStart() {
        super.onStart();
        mFirebaseAuth.addAuthStateListener(mAuthStateListener);
        }
      }

1 Ответ

2 голосов
/ 01 ноября 2019

Вы звоните:

mFirebaseAuth.addAuthStateListener(mAuthStateListener);

Это означает, что вы просите Firebase вызывать методы объекта mAuthStateListener, когда изменяется состояние аутентификации пользователя. Но вы никогда не дадите mAuthStateListener никакого значения в вашем коде, так что это null. Когда состояние аутентификации изменяется, Firebase пытается вызвать mAuthStateListener.onAuthStateChanged, что приводит к получаемой вами ошибке.

Решение состоит в том, чтобы правильно реализовать прослушиватель изменения состояния аутентификации, как, например, показано здесь . Это может быть что-то вроде этого для вас:

mFirebaseAuth.addAuthStateListener(new FirebaseAuth.AuthStateListener() {
    @Override
    public void onAuthStateChanged(@NonNull FirebaseAuth auth) {
        if (auth.getCurrentUser() != null) {
            ...
        }
    }
});

В этом случае вам даже больше не нужно поле private FirebaseAuth.AuthStateListener mAuthStateListener;.

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