【问题标题】:Can't pass null for argument 'pathString' in child() Android Studio Firebase无法在 child() Android Studio Firebase 中为参数“pathString”传递 null
【发布时间】:2020-11-05 03:21:59
【问题描述】:

您好,我目前正在使用 firebase 数据库构建一个应用程序,我遇到了一个错误,我不知道如何解决这个问题,它说它无法通过子密钥

public FirebaseDatabaseHelper() {
    mDataPelanggan = FirebaseDatabase.getInstance();
    mReferencePelanggan = mDataPelanggan.getReference("datapelanggan");
}
public void readPelanggan(final DataStatus dataStatus){
    mReferencePelanggan.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            pelanggans.clear();
            List<String> keys = new ArrayList<>();
            for(DataSnapshot keyNode : dataSnapshot.getChildren()){
                keys.add(keyNode.getKey());
                Pelanggan pelanggan = keyNode.getValue(Pelanggan.class);
                pelanggans.add(pelanggan);

            }
            dataStatus.DataIsLoaded(pelanggans,keys);
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {

        }
    });

}

public void addPelanggan(Pelanggan pelanggan, final DataStatus dataStatus){
    String  key = mReferencePelanggan.push().getKey();
    mReferencePelanggan.child(key).setValue(pelanggan)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    dataStatus.DataIsInserted();
                }
            });

}

public void updatePelanggan(String key, Pelanggan pelanggan, final DataStatus dataStatus){
    mReferencePelanggan.child(key).setValue(pelanggan)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    dataStatus.DataIsUpdated();
                }
            });
}
public void deletePelanggan(String key, final DataStatus dataStatus){
    mReferencePelanggan.child(key).setValue(null)
            .addOnSuccessListener(new OnSuccessListener<Void>() {
                @Override
                public void onSuccess(Void aVoid) {
                    dataStatus.DataIsDeleted();
                }
            });
}

这是我面临的错误

E/AndroidRuntime: 致命异常: main 进程:com.example.myapplication,PID:6839 java.lang.NullPointerException:不能在 child() 中为参数“pathString”传递 null 在 com.google.firebase.database.DatabaseReference.child(DatabaseReference.java:96) 在 com.example.myapplication.FirebaseDatabaseHelper.updatePelanggan(FirebaseDatabaseHelper.java:73) 在 com.example.myapplication.PelangganDetail$1.onClick(PelangganDetail.java:71) 在 android.view.View.performClick(View.java:6605) 在 android.view.View.performClickInternal(View.java:6582) 在 android.view.View.access$3100(View.java:778) 在 android.view.View$PerformClick.run(View.java:25897) 在 android.os.Handler.handleCallback(Handler.java:873) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:6692) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

导致“mReferencePelanggan.child(key).setValue(pelanggan)”的第 71 行

【问题讨论】:

标签: android firebase firebase-realtime-database


【解决方案1】:

错误消息告诉您,您传递给child()key 在方法updatePelanggan 中为空。您将不得不进行一些调试以找出原因。您没有显示对updatePelanggan 的调用,因此无法在此处查看该空值的确切来源。

【讨论】:

  • 您好,感谢您的回答。已经尝试调试但没有问题,当我执行一些更新或更新按钮时会发生,抱歉没有显示对updatePelanggan 的调用但这里是imgur
猜你喜欢
  • 1970-01-01
  • 2020-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
相关资源
最近更新 更多