Syahrul Ramadhan
Syahrul Ramadhan

Reputation: 1

Can't pass null for argument 'pathString' in child() Android Studio Firebase

Hello im currently building an app using firebase database, im facing an error and i dont know howw to solve this, its say it cant get pass the child key

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();
                }
            });
}

here is the error im facing

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.myapplication, PID: 6839 java.lang.NullPointerException: Can't pass null for argument 'pathString' in child() at com.google.firebase.database.DatabaseReference.child(DatabaseReference.java:96) at com.example.myapplication.FirebaseDatabaseHelper.updatePelanggan(FirebaseDatabaseHelper.java:73) at com.example.myapplication.PelangganDetail$1.onClick(PelangganDetail.java:71) at android.view.View.performClick(View.java:6605) at android.view.View.performClickInternal(View.java:6582) at android.view.View.access$3100(View.java:778) at android.view.View$PerformClick.run(View.java:25897) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6692) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

line 71 which lead to "mReferencePelanggan.child(key).setValue(pelanggan)"

Upvotes: 0

Views: 279

Answers (1)

Doug Stevenson
Doug Stevenson

Reputation: 317562

The error messages is telling you that the key you're passing to child() is null in the method updatePelanggan. You're going to have to do some debugging to figure out why that is. You're not showing the call to updatePelanggan, so it's not possible to see here where exactly that null value is coming from.

Upvotes: 0

Related Questions