Ich versuche, eine einfache Nummer aus einer Firebase-Datenbank zu erhalten. Ich habe eine Datenbank, die "Anhänger" genannt wird, ist es so strukturiert ...Firebase-Datenbank null Objektreferenz
followers: {
{userID}: {
count: 5,
users: { {userID}: true, ... }
},
...
}
Einfach richtig. Ich möchte also das "count" -Objekt abrufen und eine Null-Objektreferenz vermeiden, wenn diese "userID" nicht existiert. So habe ich ein sehr einfaches (oder zumindest dachte ich, es war) Setup für die ...
DatabaseReference followersDB = FirebaseDatabase.getInstance().getReference("followers").child(user.getUid()).child("count");
followersDB.addListenerForSingleValueEven(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot != null) {
int followersCount = dataSnapshot.getValue(Integer.class);
//put value in view;
} else {
//put 0 in view
}
}
});
Man würde denken, dass die „if (dataSnapshot! = Null)“ würde aus stoppt einen Nullwert getting aber, wenn ich betreibe meine App in einem Emulator ich ...
java.lang.NullPointerException: Der Versuch, virtuelle Methode aufzurufen 'int java.lang.Integer.intValue()' auf ein null-Objekt Referenz
Warum gibt es mir immer noch eine Null-Objekt-Referenz nce wenn ich auf "if (dataSnapshot! = null)" teste? Gibt es eine Möglichkeit, vor der Zuweisung zu prüfen, ob der Wert vorhanden ist? Ich dachte, das wäre genug, aber anscheinend ist es nicht. Danke für deine Zeit und Hilfe.
Sie bestanden nie 'null' für die' DataSnapshot 'Parameter. Um zu überprüfen, ob ein Wert existiert, verwenden Sie 'dataSnapshot.exists()'. –