2017-01-10 10 views
0

MainActivityに含まれているナビゲーション・ドロワーがいくつかのフラグメントにナビゲートします。FragmentクラスでFirebaseAuth.AuthStateListenerが呼び出されていません

FirebaseAuth.AuthStateListener mAuthListener; 
... 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
mAuthListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      user = firebaseAuth.getCurrentUser(); 
      if (user != null) { 
       Log.e(TAG, "onAuthStateChanged:signed_in" + user.getUid()); 

      } else { //user is not logged in 

       Log.e(TAG, "onAuthStateChanged:signed_out"); 

      } 

     } 
    }; 
    } 

しかしonAuthStateChangedが呼び出されることはありません。これらのフラグメントのクラスののonCreateメソッドでは、現在のユーザーを取得するためにonAuthStateChangedにしようとしています。 類似したコードMainActivityが問題なく動作します。私はフラグメントのonCreateView()onResume()メソッドでこのコードを呼び出そうとしましたが、何も起こりません。 は、この問題を解決し、現在のユーザーを取得するには、私はMainActivityでメソッドを作成しました:

public FirebaseUser getFirebaseUser() { 
    return user; 
} 

をしてから実行してフラグメント・クラスのメソッドを呼び出し:

FirebaseUser user = ((MainActivity) getActivity()).getFirebaseUser(); 

if (user != null) { 
      Log.e(TAG, "onAuthStateChanged:signed_in" + user.getUid()); 

     } else { //user is not logged in 

      Log.e(TAG, "onAuthStateChanged:signed_out"); 

     } 

を、すべてがうまく動作します。 私の質問は、なぜ私は私のフラグメントのクラスから

mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { ... 

呼び出すことができません、
のですか?フラグメントのクラスで

public void onStart(){ 
    super.onStart(); 
    firebaseAuth.addAuthStateListener(mAuthListener); //firebaseAuth is of class FirebaseAuth 
} 

:@ArnisShaykhへ

+0

は、フラグメントの 'onViewCreated'からそれを呼び出してみましたか? –

+0

FirebaseAuthオブジェクトのローカルインスタンスが存在しない可能性もあります。 –

+0

ローカルインスタンスがあります。そのため、コンテナアクティビティからユーザを取得するのはなぜですか –

答えて

3

おかげで、私は私が呼び出していなかった発見しました。

も追加することを忘れないでください:

@Override 
public void onStop() { 
    super.onStop(); 
    if (mAuthListener != null) { 
     firebaseAuth.removeAuthStateListener(mAuthListener); 
    } 
} 
関連する問題