Android 使用removeValue()时Firebase应用程序崩溃

Android 使用removeValue()时Firebase应用程序崩溃,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,当我使用以下代码…并按下应用程序中的“删除”按钮时,该值在firebase数据库中被删除,但会导致我的应用程序崩溃 mSingleRemoveBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(mPostKey!=null)

当我使用以下代码…并按下应用程序中的“删除”按钮时,该值在firebase数据库中被删除,但会导致我的应用程序崩溃

    mSingleRemoveBtn.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                if(mPostKey!=null)
                {
                    System.out.println("The key is " + mPostKey);

                    mDatabase.child(mPostKey).removeValue();
                    Intent mainIntent = new Intent(BlogSingleActivity.this, MainActivity.class);
startActivity(mainIntent);

                }
                else
                {
                    System.out.println("The key is empty");
                }

            }
另外,当我删除“mDatabase.child(mPostKey).removeValue();”时,应用程序工作正常,但显然没有从数据库中删除条目

LOGCAT

    08-01 19:42:51.093 32536-32536/com.vks_apps.blogs I/System.out: The key is -KqT82kPqOE_iq0UKHnm

                                                                --------- beginning of system
08-01 19:42:51.129 32536-4494/com.vks_apps.blogs V/FA: Inactivity, disconnecting from the service
08-01 19:42:51.131 32536-32536/com.vks_apps.blogs D/AndroidRuntime: Shutting down VM
08-01 19:42:51.132 32536-32536/com.vks_apps.blogs E/UncaughtException: java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()
                                                                           at com.google.firebase.database.DatabaseReference.child(Unknown Source)
                                                                           at com.vks_apps.blogs.BlogSingleActivity$1.onDataChange(BlogSingleActivity.java:88)
                                                                           at com.google.android.gms.internal.zzbmz.zza(Unknown Source)
                                                                           at com.google.android.gms.internal.zzbnz.zzYj(Unknown Source)
                                                                           at com.google.android.gms.internal.zzboc$1.run(Unknown Source)
                                                                           at android.os.Handler.handleCallback(Handler.java:751)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                           at android.os.Looper.loop(Looper.java:154)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:6077)
                                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
08-01 19:42:51.135 32536-4494/com.vks_apps.blogs D/FA: Logging event (FE): _ae, Bundle[{_o=crash, _sc=BlogSingleActivity, _si=-4635728123048285128, timestamp=1501596771132, fatal=1}]
08-01 19:42:51.157 32536-4494/com.vks_apps.blogs V/FA: Using measurement service
08-01 19:42:51.157 32536-4494/com.vks_apps.blogs V/FA: Connecting to remote service

                                                       --------- beginning of crash
08-01 19:42:51.378 32536-32536/com.vks_apps.blogs E/AndroidRuntime: FATAL EXCEPTION: main
                                                                    Process: com.vks_apps.blogs, PID: 32536
                                                                    java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()
                                                                        at com.google.firebase.database.DatabaseReference.child(Unknown Source)
                                                                        at com.vks_apps.blogs.BlogSingleActivity$1.onDataChange(BlogSingleActivity.java:88)
                                                                        at com.google.android.gms.internal.zzbmz.zza(Unknown Source)
                                                                        at com.google.android.gms.internal.zzbnz.zzYj(Unknown Source)
                                                                        at com.google.android.gms.internal.zzboc$1.run(Unknown Source)
                                                                        at android.os.Handler.handleCallback(Handler.java:751)
                                                                        at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                        at android.os.Looper.loop(Looper.java:154)
                                                                        at android.app.ActivityThread.main(ActivityThread.java:6077)
                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
08-01 19:42:51.445 32536-5218/com.vks_apps.blogs I/FirebaseCrash: Sending crashes
08-01 19:42:52.021 32536-5218/com.vks_apps.blogs I/FirebaseCrash: Response code: 200
08-01 19:42:52.023 32536-5218/com.vks_apps.blogs I/FirebaseCrash: Report sent with crash report id: 6e22679504000000

正如您在日志中所说,
无法为child()中的参数“pathString”传递null,这意味着这行代码中的某些内容是
null

mDatabase.child(mPostKey).removeValue();
唯一可以为空的是
mPostKey
。在使用
removeValue()
方法之前,请检查
null

if(mPostKey != null) {
    mDatabase.child(mPostKey).removeValue();
}
还要从Firebase数据库中删除记录,请确保mPostKey不为null。看看哪里是空的

看到更新后的问题,其中在logcat
-KqT82kPqOE\u iq0UKHnm
中显示了
mPostKey
,问题出在
BlogSingleActivity
的第88行。问题实际上是在第88行,再次使用了
mPostKey
,导致应用程序崩溃,因为将空值传递到
child()
方法<代码>mPostKey!=仅为检查空值而添加空值


希望有帮助。

在调用堆栈中,您可以看到问题出在
blogsingelactivity$1.onDataChange()
中。您正在调用数据库,并将空值传递到
child()

,这就是问题所在。。。该值不为空。。。它仍然给出了这个错误。给出了错误消息,在
blogsingelactivity.java:88
上,您正在将一个空值传递到
child()
。不同意错误信息从来没有让我走得很远。但是如果没有看到(阅读链接,它非常有用),就很难进一步帮助您。鉴于堆栈跟踪中问题的根源,您能否指出代码中的
BlogSingleActivity.java:88
?Vipul,请不要用指向其他问题的链接发送评论。你已经在几个地方做过了,在这里和下面的答案上。这对其他用户来说很烦人,而且违反了我们的规则。如果有人想找到你的其他问题,他们可以看到你的个人资料中列出的所有问题。