Java 尝试调用虚拟方法';boolean com.google.firebase.firestore.DocumentSnapshot.exists()';关于空对象引用
我在使用firebase firestore时收到一个空指针引用,我的应用程序正在崩溃。这是我的密码:Java 尝试调用虚拟方法';boolean com.google.firebase.firestore.DocumentSnapshot.exists()';关于空对象引用,java,android,firebase,google-cloud-firestore,nullpointerexception,Java,Android,Firebase,Google Cloud Firestore,Nullpointerexception,我在使用firebase firestore时收到一个空指针引用,我的应用程序正在崩溃。这是我的密码: private FirebaseFirestore fstore=FirebaseFirestore.getInstance(); private DocumentReference documentReference=fstore.collection("users").document("17030121084"); @Override protected void onStar
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);
}
}
});
}
私有FirebaseFirestore fstore=FirebaseFirestore.getInstance();
private DocumentReference=fstore.collection(“用户”).document(“17030121084”);
@凌驾
受保护的void onStart(){
super.onStart();
documentReference.addSnapshotListener(这个,新的EventListener(){
@凌驾
public void OneEvent(@Nullable DocumentSnapshot DocumentSnapshot,@Nullable FirebaseFirestoreException e){
if(documentSnapshot.exists()){
字符串学期=documentSnapshot.getString(“sem”);
sem.setText(学期);
}
}
});
}
这里的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);
}
}
但是上面的代码还没有处理错误。由于在您的情况下,document
显然是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);
}
}
请注意,此代码与上的文档中的内容非常匹配,因此我强烈建议您在那里花费一些时间。谢谢,我更改了权限,它对我有效。