[英]Getting Data from Firebase realtime database, Android Studio, Java
[英]Android Studio is not reading the retreived data from Firebase realtime database
我正在嘗試從 Firebase 讀取數據,但盡管我正在使用教程,但它並未被 android studio 讀取
我試圖將 Android Studio 發送的鏈接復制到 Firebase:
DatabaseReference myRef = database.getReference("USERS").child(uID).child("DeviceID"); textview.setText(myRef.toString());
並在瀏覽器中傳遞結果,它向我顯示了 firebase 中的結果,但是當我嘗試使用它來獲取數據時,它沒有檢索任何內容。 這是我嘗試通過調用函數來讀取它的方式:
textview.setText(ReadDeviceId);
'''''''''''''''''''''''''''''''''''
private String ReadDeviceId(){
FBUser = FirebaseAuth.getInstance().getCurrentUser();
uID = FBUser.getUid();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("USERS").child(uID).child("DeviceID");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
r_deviceID = dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
r_deviceID = "no userID";
}
});
return r_deviceID;
}
'''''''''''''''''''''''''''''''''''''''' 知道我的firebase數據庫安全規則是: '''''''''''''''''''''''''''''''''
{
“規則”:{
".write": "auth != null",
“.read”:真
}
}
'''''''''''''''''''
但沒有顯示任何內容
你可以試試這個代碼
private String ReadDeviceId(){
FBUser = FirebaseAuth.getInstance().getCurrentUser();
uID = FBUser.getUid();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef =
database.getReference("USERS").child(uID).child("DeviceID");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(Datasnapshot snapshot : dataSnapshot.getChildren)
{
//try to map it with your on model class and replace the String with your model class
r_deviceID = snapshot.getValue(String.class)
}
//r_deviceID = dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
r_deviceID = "no userID";
}
});
return r_deviceID;
}
在您的ReadDeviceId()
函數中,您將在設置之前返回r_deviceID
的值(事件偵聽器不同步)。 因此,您的textview.setText(ReadDeviceId());
將永遠是textview.setText(null);
,這將不顯示任何內容。
對於您的用例,您應該將addValueEventListener
更改為addListenerForSingleValueEvent
並從處理程序本身中設置 textview 的值,如下所示:
private String ReadDeviceId(){
FBUser = FirebaseAuth.getInstance().getCurrentUser();
uID = FBUser.getUid();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("USERS").child(uID).child("DeviceID");
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
textview.setText(dataSnapshot.getValue(String.class));
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
textview.setText("no userID");
}
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.