java - 如何防止 "Provided document path must not be null."Firestore?

标签 java android google-cloud-firestore

当我想通过 onBackPressed 移动到上一个 Activity (ViewData.class) 时遇到问题,但我做不到。有解决问题的方法吗?问题是:

 Caused by: java.lang.NullPointerException: Provided document path must not be null.
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:906)
    at com.google.firebase.firestore.CollectionReference.document(com.google.firebase:firebase-firestore@@21.1.1:103)
    at id.MuhammadRafi.StockCount.ViewData.onStart(ViewData.java:200)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236)
    at android.app.Activity.performStart(Activity.java:6006)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)

View 数据.java :

@Override
protected void onStart() {
    super.onStart();

    documentID = getIntent().getStringExtra("documentID");

    collectionReference.document(documentID).collection("Products").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if(task.isSuccessful()) {

                itemsList.clear();

                for(DocumentSnapshot documentSnapshot : task.getResult()) {
                    Items items = documentSnapshot.toObject(Items.class);
                    itemsList.add(items);

                    productListAdapter.notifyDataSetChanged();
                }
            }
        }
    });
}

主要 Activity .java :

public void onBackPressed() {
    Intent moveView = new Intent(ScanActivity.this, ViewData.class);
    startActivity(moveView);
    finish();
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case android.R.id.home:
            onBackPressed();
            return true;
    }
    return super.onOptionsItemSelected(item);
}

最佳答案

如果你想回到之前的 Activity ,不需要

startActivity(moveView);
finish();

在您的 onBackPressed() 中。您在那里所做的是启动该 Activity 的另一个实例并发送您要发回的数据。

而是在 ViewData.classMainActivity 中的 onBackPressed() 中执行 startActivityForResult()/p>

public void onBackPressed() {
    Intent moveView = getIntent();
    //Here your can add whatever values you want to send back to your activity
    moveView.putExtra("some_key",value)
    setResult(Activity.RESULT_OK,moveView);
    finish();
}

然后在您的 ViewData.class 覆盖 onActivityResult() 中,您将在其中检索当前 Activity 发送的数据。参见 Getting a Result from an Activity 您在使用 Firestore 时遇到的问题是您没有使用正确的路径进行初始化,这可能是因为您正在启动 ViewData.class

的新实例

关于java - 如何防止 "Provided document path must not be null."Firestore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58194375/

相关文章:

java - 我想获取联系人姓名和电话号码,但我的代码只打印联系人姓名,所以我怎样才能获取号码

firebase - future 函数返回空Firestore

javascript - Dialogflow 到 firestore 内联编辑器 javascript : sorting and filtering on different parameters of collection

javascript - 无法在复选框上输入 addEventListener?

java - InputStream - 在什么时候下载数据

java - Spark - 从 Scala 代码调用 Java 方法时出现 UnsupportedOperationException

Android 测试使用 logcat 进行事件捕获

java - 如何更换战斧 <t :saveState> and <t:dataList> tags with standard JSF tags?

java - Hibernate 在读取之前永久清除所有现有数据

java - Android:为 ListView 项目添加边框