user12685068
user12685068

Reputation:

error in displaying message in chat app in android studio

I am creating an app in android studio in which I want to add group chat functionality but the code I am using to display the message is showing error. the error is

java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.firebase.database.DatabaseReference com.google.firebase.database.DatabaseReference.child(java.lang.String)' on a null object reference at com.e.whatsapp.GroupChatActivity.onStart(GroupChatActivity.java:69)

private DatabaseReference UsersRef, GroupNameRef, GroupMessageKeyRef;

 protected void onStart() {

        super.onStart();
        GroupNameRef.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                if(dataSnapshot.exists()){
                    DisplayMessages(dataSnapshot);
                }
            }

            @Override
            public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
                if(dataSnapshot.exists()){
                    DisplayMessages(dataSnapshot);
                }
            }

            @Override
            public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });
    }

Upvotes: 0

Views: 115

Answers (1)

Gastón Saillén
Gastón Saillén

Reputation: 13129

None of the DatabaseReferences has been initialized yet

private DatabaseReference UsersRef, GroupNameRef, GroupMessageKeyRef;

You should initialize them in your onCreate() method as

UsersRef = FirebaseDatabase.getInstance().getReference();
GroupNameRef = FirebaseDatabase.getInstance().getReference();
GroupMessageKeyRef = FirebaseDatabase.getInstance().getReference();

Note

When you use GroupNameRef.addChildEventListener... first define the child where your reference is pointing at to listen to those values

GroupNameRef.child("groups").addChildEventListener...

or initialize it in your onCreate() as

GroupNameRef = FirebaseDatabase.getInstance().getReference().child("groups");

Upvotes: 1

Related Questions