android - Android Studio 上的对象返回 ID Null
问题描述
我试图检索由 firebase 随机生成的文档 ID。我想根据 ID 检索任务,所以如果我需要删除一堆任务,我可以选择任务并删除。我有下面的代码,我试图从 TaskList 类中检索 taskID,其中已经为字段初始化了 setter 和 getter,因此我可以删除特定任务。但是,当我运行代码时,它返回以下错误:
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");
}
});
}
解决方案
错误信息:
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()
ViewTask.java 的第 183 行。
您将不得不调试您的应用程序以找出其中一个userId
或taskId
为空的原因。我怀疑它是taskId
,但我们看不到实际产生该值的原因。
推荐阅读
- python - Python空闲3.7.4
- angular - 在 Ionic iOS Capacitor 项目上获取本地文件会产生跨源错误
- android - 如何保存分数并重新启动应用程序以在 Android 中启动页面?
- html - 如何在css中移动div
- javascript - 添加选项后刷新细长选择组件
- javascript - 类型上不存在属性.. 错误。这里有什么问题?
- solr - 在 SOLR HTTPS 请求中存储凭据
- java - 使用 APSTEX IFC 框架的 IfcJava3DViewer 时出现 java.lang.NoClassDefFoundError
- php - PHP MySQL 如何在 2 个表中选择 2 个特定值和 1 个公共值?
- python - 按组将观察值更改为下一个观察值