首页 > 解决方案 > 在 android studio 的聊天应用中显示消息时出错

问题描述

我正在 android studio 中创建一个应用程序,我想在其中添加群聊功能,但我用来显示消息的代码显示错误。错误是

java.lang.NullPointerException:尝试在 com.e 的空对象引用上调用虚拟方法“com.google.firebase.database.DatabaseReference com.google.firebase.database.DatabaseReference.child(java.lang.String)”。 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) {

            }
        });
    }

标签: androidfirebasefirebase-realtime-database

解决方案


尚未初始化任何DatabaseReferences

private DatabaseReference UsersRef, GroupNameRef, GroupMessageKeyRef;

您应该在您的onCreate()方法中将它们初始化为

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

笔记

当您使用GroupNameRef.addChildEventListener...first 定义您的参考指向的孩子来收听这些值时

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

onCreate()或在您的as中初始化它

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

推荐阅读