gpt4 book ai didi

Android Firebase addListenerForSingleValueEvent 不工作

转载 作者:太空狗 更新时间:2023-10-29 15:58:55 26 4
gpt4 key购买 nike

我知道这已经被问了很多,但我仍然可以让它工作。这是我的代码:

private int test;

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userRef = rootRef.child("Users");

test = 0;
userRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild(userID))
test = 1;
else
test = 2;
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

Log.d(TAG, "Test = " + test);

这是 Firebase 上的内容:

  • 应用名称-e545e
    • 用户
      • 用户ID

我不知道为什么,但是变量“test”总是返回值 0,这意味着 addListenerForSingleValueEvent 不起作用。感谢您在高级方面的帮助

最佳答案

数据是从 Firebase 异步加载的。当您的日志 test 时,onDataChange 尚未运行。

要查看实际效果,请在内部 onDataChange 添加更多日志记录:

私密测试;

test = 0;
userRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild(userID)) {
test = 1;
}
else {
test = 2;
}
Log.d(TAG, "Test2 = " + test);
}

@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // Don't ignore errors
}
});

Log.d(TAG, "Test = " + test);

现在你首先会看到:

Test = 0

然后一旦数据加载完毕并调用 onDataChange:

Test = 1

Test = 2

因此,您应该始终在 onDataChange() 中放置(或调用)需要数据库数据的代码。

关于Android Firebase addListenerForSingleValueEvent 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46387359/

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