android - 在 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) {
}
});
}
解决方案
尚未初始化任何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");
推荐阅读
- java - Java 和属性重载
- apache - 我无法将 htaccess 代码转换为 nginx conf 代码
- javascript - 如何从包含子字符串的对象数组中提取元素 - Javascript和Angular 5
- node.js - 在指定文件夹中以编程方式运行 npm install
- opengl - OpenGL 仅将 glMaterial 应用于一个对象
- node.js - Ruby 等价于 Node .toString('ascii')
- c# - 如何使用 C# 将 xls 或 xlsx 转换为 XML 电子表格 2003
- php - Laravel composer 停止下载包
- mysql - 在 WHERE ... IN? 中启用重复项
- excel - Excel 两列之间的宏倒数转换 (lbs/kg)