情况如下:
该活动始于应用程序的启动(我们称其为启动活动,因为它用于进行某些检查和读取/写入某些设置)是由框架进行的,最后一个框架具有firebase {{ 1}},其中float
包含用于启动新活动的代码(假设主要活动为 )。
(所谓的)主要活动菜单的一个选项是Firebase signInWithEmailAndPassword
,当我点击它时,当前用户会退出,但是addOnCompleteListener
(被编码为先前活动的最后一个片段)!
是因为我将登录和注销分为两个不同的活动吗?
在此先感谢任何人。
这是代码架构:
signOut
p.s。 -我注意到是因为signInWithEmailAndPassword
踢出了Firebase用户,并且再次调用FirebaseAuth.getInstance().signInWithEmailAndPassword(email, password)
.addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// read some data from realtime database
database
.getReference(path)
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
get snapshot data ...
// Store them into shared preferences
mSettings
.edit()
.putStringSet("STRING_SET_KEY", dataSet)
.apply();
// Update some Realtime database data
database
.getReference(path)
.updateChildren(newData)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
// Start new activity
Intent intent = new Intent(getActivity(), MainActivity.class);
startActivity(intent);
}
});
});
});
});
}
});
});
时出现错误,因为无法读取实时数据库
答案 0 :(得分:0)
您可以检查用户是否仍在登录。
根据此链接:https://firebase.google.com/docs/auth/android/manage-users
这段代码放在onCreateView ...
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
// User is signed in
// Start new activity
Intent intent = new Intent(getActivity(), MainActivity.class);
startActivity(intent);
} else {
// No user is signed in
}