【发布时间】:2017-05-22 20:05:19
【问题描述】:
登录活动:
private FirebaseAuth firebaseAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
firebaseAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
finish();
startActivity(new Intent(LoginActivity.this, MainActivity.class));
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
}
};
}
主活动:
public FirebaseAuth firebaseAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
firebaseAuth = FirebaseAuth.getInstance();
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser == null) {
//finish();
//startActivity(new Intent(MainActivity.this, LoginActivity.class));
} else {
Log.d(TAG, "THE USER IS NOT NULLL. his email is: " + firebaseUser.getEmail());
}
button.setOnClickListener(new OnClick(){
startActivity(new Intent(ActivityB.class));
});
}
活动B:
private FirebaseAuth firebaseAuth;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_friend);
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
//Here the user is always null
}
好的,正在发生的场景:
我成功登录到应用程序,在MainActivity.java 中打印用户不为空。但是当我按下按钮时,ActivityB.java 正在启动,但用户和FirebaseAuth 始终为空。
我之前在MainActivity.java 中添加了一个authListener,我发现每当我从 MainActivity 开始一个新活动时,都会触发侦听器并且其用户将为空。
那么为什么在我启动 Intent 时会触发监听器,以及如何从不同的 Activity 访问 firebaseAuth 和 currentUser?
【问题讨论】:
-
你在哪里设置和移除监听器?
-
在 onStart() 和 onStop() 中就像在文档中一样
标签: android android-intent firebase firebase-authentication