我在使用 firebase firestore 时收到一个空指针引用,我的应用崩溃了。这是我的代码:
private FirebaseFirestore fstore=FirebaseFirestore.getInstance();
private DocumentReference documentReference=fstore.collection("users").document("17030121084");
@Override
protected void onStart(){
super.onStart();
documentReference.addSnapshotListener(this, new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
if (documentSnapshot.exists()){
String semester=documentSnapshot.getString("sem");
sem.setText(semester);
}
}
});
}
这里的sem指的是我的文档17030121084中的字段。
有人能对此提出解决方案吗?
如果尝试读取文档时出错,documentSnapshot
变量将为null
。所以你的代码需要检查一下。
最简单的方法是添加一个简单的null
检查:
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
if (document != null && documentSnapshot.exists()){
String semester=documentSnapshot.getString("sem");
sem.setText(semester);
}
}
但是上面的代码还没有处理错误。由于在您的情况下文档
显然是null
,因此您实际上需要知道错误是什么才能修复它。
所以这是一个更好的方法:
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e) {
if (e != null) {
Log(TAG, "Listen failed.", e);
return;
}
if (documentSnapshot.exists()){
String semester=documentSnapshot.getString("sem");
sem.setText(semester);
}
}
请注意,此代码与侦听文档时留档中的代码非常匹配,因此我强烈建议在那里花一些时间。
问题内容: 我收到以下错误 尝试在空对象引用上调用虚拟方法’void android.widget.StackView.setAdapter(android.widget.Adapter)’ 在这条线上 完整的片段 EventsFragment.java 是 Stack_Adapter.java Stack_Items 问题答案: 您正在执行: 你是。返回。 你为什么用? 在哪里?您应该从正确的x
我的应用程序有问题,想解决它,但我无法访问解决方案,请帮帮我,,
问题内容: 我尝试使用片段来打开数据库,但是,当我单击按钮开始搜索时,程序意外终止,并显示如下错误: 主片段: DBManager类: 顺便说一句,我在MainAcitivity中使用了有关DBManager的代码,并且成功了。将代码复制到上面的片段后,它失败了,该怎么办? 问题答案: 之前和之后你都做不到。 因为,您正在执行片段实例化时。该方法将始终返回null。另外,尽量不要将参考文献保留在您
问题内容: 我正在尝试将播放器的名称保存为共享的首选项,并通过再次以共享的首选项获取它的名称来使其显示在另一个活动中,但是我的应用程序崩溃了。 致命异常:主要 代码: 播放器 PlayGame.java PlayerName.java 问题答案: 您的应用在以下位置崩溃: 因为。 您忘记在PlayGame活动中进行初始化。
我面临着这个错误: 主要活动: 谢谢你的帮助。
我尝试使用一个片段来打开一个数据库,但是,当我单击按钮开始搜索时,程序意外地终止,它显示这样的错误: 主要片段: 类DBManager: 顺便说一句,我在MainActivity中使用了关于DBManager的代码,它成功了。在我将代码复制到上面的片段后,它失败了。我该怎么办?