0

i'm trying to create a chat activity but i'm constantly getting this error, can anyone help please? x

 java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
    at com.example.linkit.chatActivity$3.onDataChange(chatActivity.java:189)
    at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@19.2.1:75)
    at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@19.2.1:63)
    at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@19.2.1:55)
    at android.os.Handler.handleCallback(Handler.java:907)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7478)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:941)

The code generating the error:

  private void seenMessage() {
    userRefForSeen = FirebaseDatabase.getInstance().getReference("Chats");
    seenListener = userRefForSeen.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot ds : dataSnapshot.getChildren()) {
                ModelChat chat = ds.getValue(ModelChat.class);

                assert chat != null;
                if (chat.getReceiver().equals(myUID) && chat.getSender().equals(userUID)) {
                    HashMap<String, Object> hasSeenHashMap = new HashMap<>();
                    hasSeenHashMap.put("isSeen", true);
                    ds.getRef().updateChildren(hasSeenHashMap);
                }
            }
        }

Edit: Here's my database and the ModelChat class. My database is set up and works perfectly and the texts i send through the chat does go through so i'm a little confused...

Firebase Database

    package com.example.linkit;

public class ModelChat {
    String message, receiver, sender, timestamp, type;
    boolean isSeen;

    public ModelChat(String message, String receiver, String sender, String timestamp, String type, boolean isSeen) {
    this.message = message;
    this.receiver = receiver;
    this.sender = sender;
    this.timestamp = timestamp;
    this.type = type;
    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 String getType() {
    return type;
}

public void setType(String type) {
    this.type = type;
}

public boolean isSeen() {
    return isSeen;
}

public void setSeen(boolean seen) {
    isSeen = seen;
}

}

David Bullock
  • 6,112
  • 3
  • 33
  • 43

0 Answers0