1
我想从我的火力地堡数据库 得到的数据我有两个片段,一个用于注册,另一个用于在 签署我有一个将数据插入到火力地堡没有问题,但不知何故,我”米无法从它onDataChange的值返回null
这些都是从我签一些代码片段中返回数据:
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener);
}
}
我里面onCreate
方法验证码:
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
user = firebaseAuth.getCurrentUser();
if(user != null)
{
getExistingUserInfo(user.getUid());
}
};
这是我从我的firebase
public void getExistingUserInfo(String uid){
final FirebaseDatabase database = FirebaseDatabase.getInstance();
database.getReference("allUsers").child(uid)
.orderByChild("emailAddress")
.equalTo(mEmailStr)
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.e("Data Changed YEA!",dataSnapshot.toString());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
问题是,当我启动应用程序和getExistingUserInfo
被称为内onCreate
,则返回最后在用户签名的数据query
的数据的方法我的设备正确
> E/Data Changed YEA!: DataSnapshot { key =
> vWOypZ07sbeQKEtXnAwbEEV7ml43, value = {password=123456789,
> username=ahmed, sgl=true, [email protected],
> studyGroupName=Study Group 2} }
但是当我按下登录,它的值返回空
E/Data Changed YEA!: DataSnapshot { key = vWOypZ07sbeQKEtXnAwbEEV7ml43, value = null }
所以我必须关闭应用程序并重新打开它才能正确获取数据!
的是用户获取签署了代码,这是一个clickListener
里面onCreateView
方法:
mAuth.signInWithEmailAndPassword(mEmailStr, mPasswordStr).addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(Task<AuthResult> task) {
if (task.isSuccessful())
{
Toast.makeText(getContext(),"Succeed!",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getContext(),"Failed!",Toast.LENGTH_LONG).show();
}
}
});
这该是多么我database
样子:
将一个调试'Log'语句添加到'getExistingUserInf o()'显示'uid'和'mEmailStr'的值。其中一个或两个可能不是正确的值。 –
问题是,getExistingUserInfo()被多次自动调用,不知道为什么,一旦应用程序启动时第一次被调用几次,然后一旦我按下登录,它就会再次被调用,这正是它看起来的样子像在我的日志中 http://image.prntscr.com/image/34be85f976b8457384bab7347344c5c0.png –
@Frank,你能帮我吗? –