Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试调用虚拟方法';boolean com.google.firebase.firestore.DocumentSnapshot.exists()';关于空对象引用_Java_Android_Firebase_Google Cloud Firestore_Nullpointerexception - Fatal编程技术网

Java 尝试调用虚拟方法';boolean com.google.firebase.firestore.DocumentSnapshot.exists()';关于空对象引用

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

我在使用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);
                }
            }
        });
    }
私有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);
    }
}

请注意,此代码与上的文档中的内容非常匹配,因此我强烈建议您在那里花费一些时间。

谢谢,我更改了权限,它对我有效。