【发布时间】: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