Android Firebase addOnChildListener致命异常“;“打印需求信息”;没有二传手/场
我相信我的一切都设置正确,事实上,它甚至工作!我在日志中得到结果,直到它崩溃 我真的不明白发生了什么事 在数据库中:Android Firebase addOnChildListener致命异常“;“打印需求信息”;没有二传手/场,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我相信我的一切都设置正确,事实上,它甚至工作!我在日志中得到结果,直到它崩溃 我真的不明白发生了什么事 在数据库中: messages ......body ......name ......msgId ......createdat ......receiverUid ......senderUid 我的班级: public class Message { public String msgId; public Stri
messages
......body
......name
......msgId
......createdat
......receiverUid
......senderUid
我的班级:
public class Message {
public String msgId;
public String receiverUid;
public String senderUid;
public String body;
public String name;
public Long createdat;
public Message(){
}
public Message(String msgId, String receiverUid, String senderUid, String body, String name, Long createdat){
this.msgId = msgId;
this.receiverUid = receiverUid;
this.senderUid = senderUid;
this.body = body;
this.name = name;
this.createdat = createdat;
}
}
给出错误的行:
Log.d("childadded ", newMessage.body);
整个命令:
public void onChildAdded(DataSnapshot dataSnapshot, String previousKey) {
Message newMessage = dataSnapshot.getValue(Message.class);
messageList.add(newMessage);
//moonList.add(dataSnapshot.getValue(Memf.class));
mMessageAdapter.notifyDataSetChanged();
Log.d("childadded ", newMessage.body);
}
结果是:
E/RecyclerView: No adapter attached; skipping layout
D/childadded: vatican
D/childadded: gastro
dangers of Skynet
D/childadded: stay so
amazing
W/ClassMapper: No setter/field for BMsZWfn7y6RceZGJeSNBbCpPmkm1 found on class com.thisapp.Message
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.dhienterprises.dhawkins.nofltr, PID: 19325
java.lang.NullPointerException: println needs a message
如您所见,它返回了一些结果,但跳过了一些“Childadded”条目
另外,它说用户名没有字段这一事实也很奇怪。正如您所看到的,这里绝对有一个receiverUid字段。我不是很了解这个问题
为什么它工作得很好,然后崩溃
更新为我的班级添加了“getter”。。。还是不行。错误消息完全相同。结果表明,错误的真正原因只是我数据库中的某个格式错误的对象。(这就是为什么所有其他对象都导入得很好。)删除了有问题的对象,现在一切正常
接受给出的答案,因为很高兴知道只需按两个按钮就可以为整个类设置getter和setter 你的接球手不见了 使用
.getValue()
时,请注意:
此方法用于整理此快照中包含的数据
进入你选择的班级。该类必须适合2个简单的
限制条件:
Alt+Insert
(Command+N
,用于Mac)即可生成公共getters setter。
理想情况下,您的类应该如下所示:
class Message {
private String author;
private String text;
private Message() {}
public Message(String author, String text) {
this.author = author;
this.text = text;
}
public String getAuthor() {
return author;
}
public String getText() {
return text;
}
}
// Later
Message m = snapshot.getValue(Message.class);
参考资料:像Mac键盘一样,Alt+Insert的功能是什么?(没有“插入”按钮…)除了我的功能之外,您实际上不需要getter和setter。问题原来只是我数据库中一些格式错误的对象。删除了有问题的对象和我拥有的原始代码。