Android Firebase addListenerForSingleValueEvent不起作用

Android Firebase addListenerForSingleValueEvent不起作用,第1张

概述我知道这已被问了很多,但我仍然可以让它工作.这是我的代码:privateinttest;DatabaseReferencerootRef=FirebaseDatabase.getInstance().getReference();DatabaseReferenceuserRef=rootRef.child("Users");test=0;userRef.addListenerForSingleValueEvent(newValu

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

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上的内容:

> appname-e545e

>用户

> userID

我不知道为什么但变量“test”总是返回值0,这意味着addListenerForSingleValueEvent不起作用.感谢您提前帮助

解决方法:

数据是从Firebase异步加载的.到日志测试时,onDataChange还没有运行.

要查看此 *** 作,请在onDataChange中添加更多日志记录:

私人int测试;

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不起作用全部内容,希望文章能够帮你解决Android Firebase addListenerForSingleValueEvent不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1102395.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存