gpt4 book ai didi

android - Fragment 类中未调用 FirebaseAuth.AuthStateListener

转载 作者:行者123 更新时间:2023-11-29 15:02:59 27 4
gpt4 key购买 nike

我的抽屉导航包含在 MainActivity 导航到几个 fragment 。在这些 Fragment 类的 onCreate 方法中,我试图通过 onAuthStateChanged 获取当前用户:

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 从未被调用。MainActivity 中的类似代码工作正常。我尝试在 fragment 的 onCreateView()onResume() 方法中调用此代码,但没有任何反应。为了解决这个问题并获取当前用户,我在 MainActivity 中创建了一个方法:

 public FirebaseUser getFirebaseUser() {
return user;
}

然后调用 Fragment 类中的方法:

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) {
...

来 self 的 Fragment 类?

最佳答案

感谢@ArnisShaykh,我发现我没有打电话:

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

在 Fragment 类中。

记得还要加上:

@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
firebaseAuth.removeAuthStateListener(mAuthListener);
}
}

关于android - Fragment 类中未调用 FirebaseAuth.AuthStateListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41562916/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com