【问题标题】:updating data in Firebase firestore is not working/crashing更新 Firebase Firestore 中的数据不起作用/崩溃
【发布时间】:2021-05-04 15:19:14
【问题描述】:

我无法更新 Firestore 中的数据。在点击 按钮数据应该在firestore中更新。一切正常 很好,除非我添加了更新编码

我的更新数据功能--

private void updatedata() {

    phoneNo = getIntent().getStringExtra("_completephoneNo");
    String newpassword = 
     Objects.requireNonNull(confirmPassword.getEditText()).getText().toString().trim();

    final DocumentReference reference = firestore.collection("users").document(phoneNo);
    Map<String, Object> map = new HashMap<>();
    map.put("password", newpassword);
    reference.update(map)
            .addOnSuccessListener(aVoid -> {
                Intent intent = new Intent(getApplicationContext(), loginPage.class);
                Toast.makeText(getApplicationContext(), "sucessfully updated password", 
                Toast.LENGTH_SHORT).show();
                startActivity(intent);
                finish();
            }).addOnFailureListener(e -> {
        Intent intent = new Intent(getApplicationContext(), loginPage.class);
        Toast.makeText(getApplicationContext(), "failed to updat password", 
         Toast.LENGTH_SHORT).show();
        startActivity(intent);
        finish();
    });
}

logcat 显示这个

E/AndroidRuntime: 致命异常: main 进程:com.example.venatusgaming,PID:20687 java.lang.IllegalStateException:无法执行 android:onClick 的方法 在 androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:414) 在 android.view.View.performClick(View.java:7189) 在 com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992) 在 android.view.View.performClickInternal(View.java:7166) 在 android.view.View.access$3500(View.java:819) 在 android.view.View$PerformClick.run(View.java:27688) 在 android.os.Handler.handleCallback(Handler.java:883) 在 android.os.Handler.dispatchMessage(Handler.java:100) 在 android.os.Looper.loop(Looper.java:224) 在 android.app.ActivityThread.main(ActivityThread.java:7592) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 引起:java.lang.reflect.InvocationTargetException 在 java.lang.reflect.Method.invoke(本机方法) 在 androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409) 在 android.view.View.performClick(View.java:7189) 在 com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992) 在 android.view.View.performClickInternal(View.java:7166) 在 android.view.View.access$3500(View.java:819) 在 android.view.View$PerformClick.run(View.java:27688) 在 android.os.Handler.handleCallback(Handler.java:883) 在 android.os.Handler.dispatchMessage(Handler.java:100) 在 android.os.Looper.loop(Looper.java:224) 在 android.app.ActivityThread.main(ActivityThread.java:7592) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) 原因:java.lang.NullPointerException:提供的文档路径不能为空。 在 com.google.firebase.firestore.util.Preconditions.checkNotNull(Preconditions.java:147) 在 com.google.firebase.firestore.CollectionReference.document(CollectionReference.java:103) 在 com.example.venatusgaming.forgotPass.setnewPassword.updatedata(setnewPassword.java:108) 在 com.example.venatusgaming.forgotPass.setnewPassword.setNewPasswordBtn(setnewPassword.java:94) 在 java.lang.reflect.Method.invoke(本机方法) 在 androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409) 在 android.view.View.performClick(View.java:7189) 在 com.google.android.material.button.MaterialButton.performClick(MaterialButton.java:992) 在 android.view.View.performClickInternal(View.java:7166) 在 android.view.View.access$3500(View.java:819) 在 android.view.View$PerformClick.run(View.java:27688) 在 android.os.Handler.handleCallback(Handler.java:883) 在 android.os.Handler.dispatchMessage(Handler.java:100) 在 android.os.Looper.loop(Looper.java:224) 在 android.app.ActivityThread.main(ActivityThread.java:7592) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950) I/Process:发送信号。 PID:20687 SIG:9

【问题讨论】:

  • 错误消息Provided document path must not be null 是说您正在传递null 值以获取文档参考;在您的情况下,它是phoneNo.. 您可以通过日志/调试验证该字段吗?

标签: firebase android-studio google-cloud-firestore nullpointerexception updates


【解决方案1】:

好吧,我找到了答案并这样做是为了解决它

map.put("密码", confirmPassword.getEditText().getText().toString().trim());

【讨论】:

    猜你喜欢
    • 2018-06-07
    • 1970-01-01
    • 2023-01-27
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    相关资源
    最近更新 更多