Ich habe diese Funktion:Firebase OnDataChange kehrt Nullwert
public String checkOnline(String fId) {
DatabaseReference onlineUser = FirebaseDatabase.getInstance().getReference().child("online").child(fId);
onlineUser.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Online post = dataSnapshot.getValue(Online.class);
uOnline = post.timestamp;
different = getDate().getTime() - uOnline;
different = TimeUnit.MILLISECONDS.toMinutes(different);
if(different < 1){
ifOnline = "donline.setVisibility(View.VISIBLE);";
} else {
ifOnline = "donline.setVisibility(View.GONE);";
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
return ifOnline;
}
ifOnline ist ein String
I checkOnline Funktion aufrufen und die Funktion ausführt, für jeden Benutzer und ruft beide Aussagen (1 für jeder Benutzer natürlich).
Das Problem ist, dass checkOnline Null zurückgibt, auch wenn die Anweisungen gut ausgeführt wurden. Wo ist das Problem? Liegt es daran, dass onDataChange ungültig ist?
Ich habe keine Ahnung, wo das Problem ist, wie die ifOnline der Klasse privat ist, also sobald es auf den Wert zugewiesen wird, sollte die currect Wert zurück ..
Datenstruktur hinzugefügt:
Online-Datenbankstruktur:
Online -> userId: status (string)
timestamp (long)
Bitte geben Sie uns Ihre Datenbankstruktur an. –
Verwenden Sie Ihre Firebase-Konsole, um Ihre Datenbankstruktur als JSON-Datei herunterzuladen. –
Diese Funktion verwendet 1 JSON-Baumobjekt, das ich zur Verfügung gestellt habe – AlwaysConfused