Java,Android,Firebase身份验证登出会抛出NullPointerException

问题描述 投票:1回答:1

我有一个带有电子邮件/密码firebase身份验证的应用。

它从登录活动开始

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    mAuth = FirebaseAuth.getInstance();
    ...

然后在我的onStart中,检查当前用户是否为null,然后导航到我的主要活动。这部分工作得非常好。

@Override
public void onStart() {
    super.onStart();
    FirebaseUser currentUser = mAuth.getCurrentUser();
    if (currentUser != null) {
        goMain();
    }
}

问题就出现了,在主要活动中我有一个按钮,我从LoginActivity.java调用了注销函数:

public void logOut() {
    LoginActivity login = new LoginActivity();
    login.logMeOut();
}


public void logMeOut() {
    FirebaseUser user = mAuth.getCurrentUser();
    if(user!=null) {
        mAuth.signOut();
        Intent intent = new Intent(this, LoginActivity.class);
        startActivity(intent);
    }
}

问题是当logMeOut运行时,我得到了这个美丽

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'com.google.firebase.auth.FirebaseUser com.google.firebase.auth.FirebaseAuth.getCurrentUser()'

我试图将mAuth = FirebaseAuth.getInstance()添加到logMeOut函数的开头,但仍然没有解决我的问题。

如果我只调用mAuth.signOut(),没有FirebaseUser部分,我会得到同样的错误。

java android firebase firebase-authentication
1个回答
1
投票

您在注销方法中创建新的登录活动可能是个问题吗?

在我看来,Auth对象将在那里重新初始化。我以与您完全相同的方式进行注销,但它位于菜单中的主要活动中

 case R.id.sign_out_menu:
            mFirebaseAuth.signOut();
            Auth.GoogleSignInApi.signOut(mGoogleApiClient);
© www.soinside.com 2019 - 2024. All rights reserved.