[英]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.