После изменения правила Firestore. я получил ошибку при выходе - PullRequest
0 голосов
/ 03 мая 2020

Поскольку я изменяю правило Firestore на

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

, я получаю эту ошибку при выходе.

2020-05-03 15:53:01.337 28023-28023/com.wordpress.asayerbh E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.wordpress.asayerbh, PID: 28023
    java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.google.firebase.firestore.DocumentSnapshot.exists()' on a null object reference
        at com.wordpress.asayerbh.MainActivity.lambda$onCreate$0$MainActivity(MainActivity.java:111)
        at com.wordpress.asayerbh.-$$Lambda$MainActivity$Ar1zoAyUIQ5aSR4DFFSn0UMdmmM.onEvent(Unknown Source:4)
        at com.google.firebase.firestore.DocumentReference.lambda$addSnapshotListenerInternal$2(com.google.firebase:firebase-firestore@@21.4.3:482)
        at com.google.firebase.firestore.DocumentReference$$Lambda$3.onEvent(Unknown Source:6)
        at com.google.firebase.firestore.core.AsyncEventListener.lambda$onEvent$0(com.google.firebase:firebase-firestore@@21.4.3:42)
        at com.google.firebase.firestore.core.AsyncEventListener$$Lambda$1.run(Unknown Source:6)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

это мой основной код активности, чтобы имя пользователя находилось в заголовок навигационного ящика.

if (user.getDisplayName() == null || user.getDisplayName().equals("")) {

   DocumentReference documentReference = mStore.collection("users").document(userID);
    documentReference.addSnapshotListener(this, (documentSnapshot, e) -> {
        if(documentSnapshot.exists()){
          nav_user.setText(documentSnapshot.getString("fName"));
      } else {
         Log.d("tag", "onEvent: Document do not exists");
       }
  });
}

Я искал об этом. Я нашел вопрос о снимке документа. и должны быть удалены для выхода. Как это сделать?

1 Ответ

0 голосов
/ 03 мая 2020

я нашел это решение documentSnapshot != null && documentSnapshot.exists())

DocumentReference documentReference = mStore.collection("users").document(userID);
                documentReference.addSnapshotListener(this, (documentSnapshot, e) -> {
                    if (documentSnapshot != null && documentSnapshot.exists()) {
                        nav_user.setText(documentSnapshot.getString("fName"));
                    } else {
                        Log.d("tag", "onEvent: Document do not exists");
                    }
                });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...