2016-03-21 67 views
2

我的主要/啓動活動是我SignInActivity,我已經包括了 火力地堡AUTH聽衆如何返回登錄活動Firebase authlistener?

mFirebase.addAuthStateListener(new Firebase.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(AuthData authData) { 
      if (authData != null) { 
       // go to auth activity 
       // such as user logging in 
      } else { 
       if(!(this instanceof SignInActivity)){ 
        // if i sign out in an auth activity 
        // i want to trigger this to go back to the SignIn Activity 
        Intent mIntent = new Intent(getApplicationContext(), SignInActivity.class); 
        mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(mIntent); 
        finish(); 
        return; 
       } 
      } 
     } 
    }); 

else語句,如果條件不工作。我知道我不能在嵌套對象中使用this。我嘗試了一些其他的嘗試,但我總是閃爍,我認爲它結束了無限循環,因爲條件總是滿足。什麼是正確的方式去做這件事?

回答

0

試試這個:

mFirebase.addAuthStateListener(new Firebase.AuthStateListener() { 
    @Override 
    public void onAuthStateChanged(AuthData authData) { 
     if (authData != null) { 
      // go to auth activity 
      // such as user logging in 
     } else { 
      if(!(SignInActivity.this instanceof SignInActivity)){ 
       // if i sign out in an auth activity 
       // i want to trigger this to go back to the SignIn Activity 
       Intent mIntent = new Intent(getApplicationContext(), SignInActivity.class); 
       mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(mIntent); 
       finish(); 
       return; 
      } 
     } 
    } 
}); 

Is it safe to use MainActivity.this

+0

那會導致mActivity永遠是SignInActivity的實例,因爲其在SignInActivity聲明? – user2439604

+0

如果這裏的想法只是在用戶重新打開應用程序時檢查用戶是否登錄,則不需要其他語句。如果用戶未登錄,則可以不做任何事情。 – TheOriginalAlex

+0

這就是其中一個原因。如果用戶在另一個活動中並且用戶註銷,我希望這會觸發。當註銷按鈕/鏈接被點擊,然後生病unAuth用戶,我希望這捕獲了這種情況,並重定向到SignInActivity – user2439604