代码之家  ›  专栏  ›  技术社区  ›  LizG

无法获取节点的值

  •  0
  • LizG  · 技术社区  · 7 年前

      "ButtonState" : {
        "payEnabled" : 0,
        "requestEnabled" : 1
      },
    

    当司机接受骑手的骑乘请求时,“payEnabled=1”的值。我试图在驱动程序接受请求后获取payEnabled的值,但是它出错了,我得到了这个:

     java.lang.NumberFormatException: For input string: "{payEnabled=0, requestEnabled=1}"
    

    我用来获取数据的代码是:

     rootRef = rootRef.child("ButtonState");
    
        rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot.exists()) {
                    int payEnabled = Integer.valueOf(dataSnapshot.getValue().toString());
                    Log.e(TAG, "payEnabled = " + payEnabled);
                    if (payEnabled == 1) {
                        pulseAnimation();
                    }
                }
            }
    
            @Override
            public void onCancelled(DatabaseError databaseError) {
    
            }
        });
    

    我做错了什么,我怎么才能得到“付款人”的价值呢?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Frank van Puffelen    7 年前

    你在听 ButtonState 把它解释成一个数字。但是 钮状 是一个JSON对象,而 payEnabled 是里面的财产 钮状 付款人 ,我只将侦听器附加到该属性:

    rootRef.child("payEnabled").addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                int payEnabled = dataSnapshot.getValue(Integer.class);
                Log.e(TAG, "payEnabled = " + payEnabled);
                if (payEnabled == 1) {
                    pulseAnimation();
                }
            }
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {
            throw databaseError.toException(); // don't ignore errors
        }
    });
    
    推荐文章