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
}
});