我收到了错误
“ java.lang.NullPointerException:尝试调用虚拟方法 空对象上的'boolean java.lang.String.equals(java.lang.Object)' 参考于 com.example.socialapp.ChatActivity $ 5.onDataChange(ChatActivity.java:255)“
并且我一直在寻找其他人遇到的其他类似问题。我不确定显示为null的内容,当我查看Firebase数据库时,会看到其中包含数据的uid字段。
我想解决此问题,我也想知道为什么会发生这种情况。
这是我的ChatActivity(我的readMessages函数)的一个片段,其中发生了错误
private void readMessages() {
chatList = new ArrayList<>();
DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference("Chats");
dbRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
chatList.clear();
for (DataSnapshot ds: dataSnapshot.getChildren()){
ModelChat chat = ds.getValue(ModelChat.class);
if(chat.getReceiver().equals(myUid) && chat.getSender().equals(theirUid) ||
chat.getReceiver().equals(theirUid) && chat.getSender().equals(myUid)){
chatList.add(chat);
}
//Adapter
adapterChat = new AdapterChat(ChatActivity.this, chatList, theirImage);
adapterChat.notifyDataSetChanged();
//Set adapter to RecyclerView
recyclerView.setAdapter(adapterChat);
}
}
错误在第255行
if(chat.getReceiver().equals(myUid) && chat.getSender().equals(theirUid) ||
chat.getReceiver().equals(theirUid) && chat.getSender().equals(myUid)){
chatList.add(chat);
}
任何帮助将不胜感激!谢谢
编辑:这是我的ModelChat.java文件
package com.example.socialapp.models;
public class ModelChat {
String message, receiver, sender, timestamp;
boolean isSeen;
public ModelChat(String message, String receiver, String sender, String timestamp, boolean isSeen) {
this.message = message;
this.receiver = receiver;
this.sender = sender;
this.timestamp = timestamp;
this.isSeen = isSeen;
}
public ModelChat() {
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getReceiver() {
return receiver;
}
public void setReceiver(String receiver) {
this.receiver = receiver;
}
public String getSender() {
return sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
public boolean isSeen() {
return isSeen;
}
public void setSeen(boolean seen) {
isSeen = seen;
}
}