簡體   English   中英

Java、Android、Firebase 身份驗證登出拋出 NullPointerException

[英]Java, Android, Firebase Authentication signin out throws NullPointerException

我有一個帶有電子郵件/密碼 firebase 身份驗證的應用程序。

它從登錄活動開始

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

然后在我的onStart 中,我檢查currentuser是否不為空,然后導航到我的主要活動。 這部分工作得很好。

@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部分,我會得到同樣的錯誤。

您正在注銷方法中創建新的登錄活動,這可能是一個問題嗎?

在我看來,Auth 對象將在那里重新初始化。 我以與您完全相同的方式注銷,但它位於菜單的主要活動中

 case R.id.sign_out_menu:
            mFirebaseAuth.signOut();
            Auth.GoogleSignInApi.signOut(mGoogleApiClient);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM