[英]Firebase getInstance returns null
我想從 firebase 下載數據。 我用下面的方法在活動中舒適地使用它。 在 mDatabase 中,我可以在調試模式下查看正在下載的數據,但我無法將其傳輸到我想要的代碼。 我在下面給出的代碼總是看起來 null。 我不知道怎么做...
謝謝你。
Firebase Json;
"server" : {
"time" : {
"Time" : 1617695199510
}
}
這個;
mDatabase.child("/server/time/Time").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
server serverTime = null;
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
serverTime = snapshot.getValue(server.class);
}
MyApplication.getInstance().setmServer(serverTime); // This code always returns null.
//I'm trying to pass the firebase value here. I am trying to pass the value here to setmServer (MyApplication).
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
hideProgressDialog();
}
});
MyApplication.java:
public server mServer = null;
private static MyApplication mInstance = null;
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
}
public static MyApplication getInstance() {
return mInstance;
}
public server getmServer(){
return mServer;
}
public void setmServer(server mserver){
mServer = mserver;
}
服務器.java:
@IgnoreExtraProperties
public class server {
public long Time;
public server(long Time) {
this.Time = Time;
}
}
不需要任何“.getChildren()”調用來循環“DataSnapshot”object。 您可以為此使用“服務器”class,或者更簡單的方法是使用以下代碼行直接從屬性獲取數據:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference timeRef = rootRef.child("server/time/Time");
timeRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>() {
@Override
public void onComplete(@NonNull Task<DataSnapshot> task) {
if (task.isSuccessful()) {
long time = task.getResult().getValue(Long.class);
Log.d(TAG, "time: " + time);
} else {
Log.d(TAG, task.getException().getMessage()); //Don't ignore potential errors!
}
}
});
logcat 中的結果將是:
time: 1617695199510
嘗試這個...
mDatabase.child("/server/time/Time").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
long time = dataSnapshot.getValue(Long.class);
Log.d(TAG, "Time :- " + time);
MyApplication.getInstance().setmServer(new server(time));
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
hideProgressDialog();
}
});
logcat 中的結果是..
Time :- 1617695199510
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.