Ich benutze Firebase-Datenbank und haben Nachricht Objekt mit einem booleschen Feld geschrieben. Wenn ich versuche, das Objekt mit getValue(Boolean.class)
zu lesen, erhalte ich eine Ausnahme. Es passiert nur, wenn ich diesen booleschen Wert bekomme, bekomme ich String ohne Probleme.Firebase-Datenbank NullPointerException bei Verwendung von getValue (Boolean.class)
Methode verursacht Ausnahme:
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
message.setSenderId(dataSnapshot.child("senderId").getValue(String.class));
message.setDestinationId(dataSnapshot.child("destinationId").getValue(String.class));
message.setDatetime(dataSnapshot.child("datetime").getValue(Date.class));
message.setText(dataSnapshot.child("text").getValue(String.class));
message.setSent(dataSnapshot.child("isSent").getValue(Boolean.class)); // this line causes NullPointerException
}
Meine Nachricht Modellklasse:
@IgnoreExtraProperties
public class Message {
@Exclude
private String id;
@Exclude
private ValueEventListener valueListener;
@Exclude
private Conversation destination;
// User ID
private String senderId;
// Conversation ID
private String destinationId;
private Date datetime;
private String text;
private boolean isSent = false;
public Message(String id, String sender, String destination, Date date, String text) {
this.id = id;
this.senderId = sender;
this.destinationId = destination;
this.datetime = date;
this.text = text;
}
public Message() {
}
public Message(String id, Conversation destination) {
this.id = id;
this.destination = destination;
}
// ...
public boolean isSent() {
return isSent;
}
public void setSent(boolean sent) {
isSent = sent;
}
}
Beispiel der Meldung in der Datenbank gespeichert:
{
"datetime" : {
"date" : 12,
"day" : 4,
"hours" : 17,
"minutes" : 32,
"month" : 9,
"seconds" : 25,
"time" : 1507822345776,
"timezoneOffset" : -120,
"year" : 117
},
"destinationId" : "test_conversation",
"isSent" : true,
"senderId" : "test_sender",
"text" : "hello world"
}
Was ist falsch mit diesem Code? Ich habe versucht, es herauszufinden, aber ich habe immer noch nichts gefunden.
nicht geschrieben Können Sie ein Beispiel für die Ausnahme von logcat teilen? Gibt es in Ihrer Datenbank einen Fall, in dem der 'isSent'-Wert nicht existiert (ist also' null')? – Grimthorr
Bitte teilen Sie Ihre Protokolle, wo Sie die Ausnahme erhalten. – Sarfaraz
bitte Screenshot Ihre Datenbankkonsole. Es ist möglich, dass das Feld 'isSent' nicht existiert – faruk