使用Firebase进行聊天的空Uid问题

时间:2020-01-31 20:36:20

标签: java android firebase firebase-realtime-database nullpointerexception

我收到了错误

“ 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;
 }
}

0 个答案:

没有答案