【问题标题】:Android firebase getValue() not workingAndroid Firebase getValue()不起作用
【发布时间】:2016-07-24 15:48:31
【问题描述】:

我有以下 JSON 文件

{
    "TestNode" : {
        "TestKey" : "TestValue",
        "TestKeyTwo" : "TestValueTwo"
    },
    "TestNode2" : {
        "One" : {
            "ItemOne" : "email@gmail.com",
            "ItemTwo" : "zYMnPqefn7BlGDidpOocff6Xcg==\nBKb1sfaDdgfe0=\n1yVcV0mciIQXtAf/4LqGdDw==\n",
            "ItemThree" : "name"
        },
        "Two" : {
            "email" : "emailtwo@gmail.com",
            "password" : "xFBvDPcnp/efebUhtefZ0+XMFfw==\ngAb5fSbzAefeQXc=\ng/WdCpusQl2umtPVOefefzjs1A==\n",
            "username" : "othername"
        }
    }
}

监听代码

TestNode.addListenerForSingleValueEvent(new ValueEventListener() {

    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        if(dataSnapshot.hasChild(TestKey)) {
            String TestKeyString = TestNode.child(TestKey).getKey();
            String TestValueString = TestNode.child(TestKey).getValue();
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
});

我得到了错误

无法解析方法getValue();

P.S 由于上面的错误,我还没有运行代码

【问题讨论】:

  • 您的问题没有提供足够的信息。发布侦听器的代码,返回DataSnapshotTestNode。此外,此声明似乎无效:String TestKey = TestNode.child(TestKey).getKey();。在初始化之前如何使用TestKey?还将代码发布到堆栈跟踪中遇到的异常。
  • 我已经更新了问题

标签: java android json firebase firebase-realtime-database


【解决方案1】:

试试这个代码:

 TestNode.addListenerForSingleValueEvent(new ValueEventListener() {

 @Override
 public void onDataChange(DataSnapshot dataSnapshot) {
    Log.d("TEST","key: "+dataSnapshot.getKey());
    Log.d("TEST","value: "+dataSnapshot.getValue());
 }

 @Override
 public void onCancelled(DatabaseError databaseError) {}
 });

更新
试试这个代码只得到一个孩子

 TestNode.orderByKey().equalTo(TestKey).addListenerForSingleValueEvent(new ValueEventListener() {

 @Override
 public void onDataChange(DataSnapshot dataSnapshot) {
    Log.d("TEST","key: "+dataSnapshot.getKey());
    Log.d("TEST","value: "+dataSnapshot.getValue());
 }

 @Override
 public void onCancelled(DatabaseError databaseError) {}
 });

【讨论】:

  • 这将打印出TestNode下的每个孩子,我只想要一个特定的
【解决方案2】:

这是您更新的代码,这肯定会起作用:

TestNode.addListenerForSingleValueEvent(new ValueEventListener() {

 @Override
 public void onDataChange(DataSnapshot dataSnapshot) {

  if(dataSnapshot.hasChild(TestKey)) {


 String TestValueString = dataSnapshot.child(TestKey).getValue(String.class);

  }
 }

 @Override
 public void onCancelled(DatabaseError databaseError) {}
 });

希望这能解决问题。这为您提供该键本身的特定值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多