Идентификатор объекта с нулевым значением в Android Studio - PullRequest
0 голосов
/ 02 мая 2020

Я попытался получить идентификатор документа, который был случайно сгенерирован firebase. Я хочу получить задачу по ее идентификатору, поэтому, если мне нужно удалить кучу задач, я могу просто выбрать задачу и удалить. У меня есть код ниже, где я пытаюсь получить taskID из класса TaskList, где инициализаторы и инициаторы инициализированы для поля, чтобы я мог удалить конкретную задачу. Однако при запуске кода возвращается следующая ошибка:

   E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.riseapp, PID: 2160
java.lang.NullPointerException: Provided document path must not be null.
    at com.google.firebase.firestore.util.Preconditions.checkNotNull(com.google.firebase:firebase-firestore@@21.4.2:147)
    at com.google.firebase.firestore.CollectionReference.document(com.google.firebase:firebase-firestore@@21.4.2:103)
    at com.example.riseapp.ViewTask.deleteTasks(ViewTask.java:183)
    at com.example.riseapp.ViewTask$3.onClick(ViewTask.java:113)
    at android.view.View.performClick(View.java:6608)
    at android.view.View.performClickInternal(View.java:6585)
    at android.view.View.access$3100(View.java:785)
    at android.view.View$PerformClick.run(View.java:25919)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:201)
    at android.app.ActivityThread.main(ActivityThread.java:6826)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

/// Функция удаления задачи

  deleteBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            deleteTasks();
        }
    });
   }


    public void deleteTasks() {
    userId = mFirebaseAuth.getCurrentUser().getUid();
    TaskList taskList = new TaskList();
    taskId = taskList.getTaskID();
    taskID.setText(taskId);

    final Map<String, Object> myfields = new HashMap<>();

    myfields.remove("taskName");
    myfields.remove("startTime");
    myfields.remove("endTime");
    myfields.remove("taskDate");
    myfields.remove("notes");
    myfields.remove("priority");
    myfields.remove("energy");
    myfields.remove("taskTag");

    DocumentReference noteRef = fStore.collection("usersData").document(userId).collection("tasks").document(taskId);
    noteRef.set(myfields)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    Log.d("tag", "Task Deleted Successfully");
                }
            });
}

1 Ответ

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

Сообщение об ошибке:

java.lang.NullPointerException: Provided document path must not be null.
    at com.google.firebase.firestore.util.Preconditions.checkNotNull(com.google.firebase:firebase-firestore@@21.4.2:147)
    at com.google.firebase.firestore.CollectionReference.document(com.google.firebase:firebase-firestore@@21.4.2:103)
    at com.example.riseapp.ViewTask.deleteTasks(ViewTask.java:183)

Сообщает, что вы передали значение null в document() в строке 183 ViewTask. java.

Вам придется отлаживать приложение чтобы выяснить, почему userId или taskId равны нулю. Я подозреваю, что это taskId, но мы не можем увидеть, что на самом деле генерирует это значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...