【发布时间】:2018-11-26 22:51:21
【问题描述】:
我之前已经搜索过此问题的解决方案,但我无法准确理解我是如何获得 NullPointerException 的。我的目标是为textView 设置一条消息,但是当它发生时应用程序崩溃了。这是错误:
java.lang.NullPointerException:尝试调用虚拟方法 'java.lang.String com.okimin.flashchatnewfirebase.Post.getMessage()' 在空对象引用上
变量:
private FirebaseUser user;
private FirebaseAuth mAuth;
private DatabaseReference mDatabaseReference;
初始化它们:
mAuth = FirebaseAuth.getInstance();
mDatabaseReference = FirebaseDatabase.getInstance().getReference();
user = FirebaseAuth.getInstance().getCurrentUser();
问题发生在哪里:
final String iD= user.getUid();
mDatabaseReference.child("messages").child(iD).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Post postIt = new Post();
postIt.setMessage(dataSnapshot.getValue(Post.class).getMessage()); // Where the problem happens
mtextview.setText(postIt.getMessage());
}
}
岗位类:
public class Post {
private String message;
private String author;
public Post(){
}
public Post(String message, String author) {
this.message = message;
this.author = author;
}
public String getMessage() {
return message;
}
public String getAuthor() {
return author;
}
public void setMessage(String message) {
this.message = message;
}
public void setAuthor(String author) {
this.author = author;
}
}
结构:
在我得到实际值之前一切正常。
【问题讨论】:
-
iD是否匹配messages下的孩子?我的猜测是它没有,因为消息下的孩子看起来像那个推送 ID,但 Firebase auth 用户 ID 不是。 -
在搜索解决方案时,我实际上并不熟悉。您能否详细说明与推送 ID 不匹配的 FirebaseAuth id?
-
Doug 提到,显然他的消息记录例程是在推送 ID 而非用户 ID 下进行记录。检查您的写入例程以写入用户 ID 节点。
-
@DanielGaston 通过单击答案旁边的勾号查找按钮将答案标记为正确,这有助于问题的未来读者,我也会很感激。干杯! :)
标签: java android firebase firebase-realtime-database