正如您在代码中看到的,我使用getValue()
从我的数据库中获取值。但是,当我想将该值存储在private static int
变量(称为"版本")时,它就像没有发生任何事情一样。
mDataBaseVersion =FirebaseDatabase.getInstance(link).getReference().getRef().child("version/number");
mDataBaseVersion.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
setVersion((Integer) dataSnapshot.getValue());
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getApplicationContext(),"Error at version check",Toast.LENGTH_LONG).show();
}
});
"版本"设定器:
public void setVersion(int ver)
{
version=ver;
}
我应该达到的JSON部分:
{
"version" : {
"number" : 2
}
}
我试图自己解决问题,但我真的无法理解发生了什么。
我使用相同的结构从我的数据库中获取其他元素(并且它正在工作)。
有人知道为什么会这样吗?
答案 0 :(得分:0)
请使用此代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference versionRef = rootRef.child("version");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Integer number = dataSnapshot.child("number").getValue(Integer.class);
Log.d("TAG", number);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
versionRef.addListenerForSingleValueEvent(eventListener);