2017-07-10 232 views
0

正如您在代碼中看到的,我使用getValue()從我的數據庫中獲取值。但是,當我想將該值存儲在private static int變量(稱爲「版本」)時,就像什麼都沒有發生。未從Firebase數據庫獲取價值

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

請張貼實際的代碼,而不是它的照片。另外,請向我們提供[最小,完整且可驗證的示例](https://stackoverflow.com/help/mcve)以及您的期望。 –

+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); 
+0

謝謝!這幫助了我很多。 –