没有从Firebase数据库中获取价值

时间:2017-07-10 09:52:07

标签: android firebase firebase-realtime-database

正如您在代码中看到的,我使用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
      }
}

我试图自己解决问题,但我真的无法理解发生了什么。

我使用相同的结构从我的数据库中获取其他元素(并且它正在工作)。

有人知道为什么会这样吗?

1 个答案:

答案 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);