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へ
は、フラグメントの 'onViewCreated'からそれを呼び出してみましたか? –
FirebaseAuthオブジェクトのローカルインスタンスが存在しない可能性もあります。 –
ローカルインスタンスがあります。そのため、コンテナアクティビティからユーザを取得するのはなぜですか –