Android 无法获取节点的值

Android 无法获取节点的值,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我有以下数据库节点: “按钮状态”:{ “已付款”:0, “已启用请求”:1 }, 当驾驶员接受骑手的骑乘请求时,“payEnabled=1”的值。我试图在驱动程序接受请求后获取payEnabled的值,但它出错,我得到以下结果: java.lang.NumberFormatException: For input string: "{payEnabled=0, requestEnabled=1}" 我用来获取数据的代码是: rootRef = rootRef.child("Button

我有以下数据库节点:

“按钮状态”:{
“已付款”:0,
“已启用请求”: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) {

        }
    });

我做错了什么,我怎么才能得到“payEnabled”的值呢?

您正在收听
按钮state
并将其解释为一个数字。但是
ButtonState
是一个JSON对象,而
payEnabled
ButtonState
中的一个属性。鉴于您只对
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
    }
});

您正在收听
按钮state
,并将其解释为一个数字。但是
ButtonState
是一个JSON对象,而
payEnabled
ButtonState
中的一个属性。鉴于您只对
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
    }
});