我想在firebase中讀取Playlist_ID為2的組的Music_ID。
發生以下錯誤。
java.lang.NullPointerException: println needs a message
這是我的 firebase 實時資料庫。

這是我的代碼。
database = FirebaseDatabase.getInstance();
storage = FirebaseStorage.getInstance();
dref = FirebaseDatabase.getInstance().getReference();
private void Startplaylist(String mood) {
DatabaseReference plist = dref.child("Playlist");
plist.orderByChild("Playlist_ID").equalTo(2).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
// Log.i("Value", dataSnapshot.getValue().toString());
String music_id = dataSnapshot.child("Music_ID").getValue(String.class);
Log.i("Value_id", music_id);
str_musictitle.setText(music_id);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
彈出報警,表明該部分發生錯誤。
Log.i("Value_id", music_id);
我認為沒有讀取“music_id”。
我嘗試將部分更改
String music_id = dataSnapshot.child("Music_ID").getValue(String.class);
為String music_ids = dataSnapshot.child("Music_ID").getValue().toString();并運行它,但無法獲得所需的結果。
uj5u.com熱心網友回復:
當您對 Firebase 資料庫執行查詢時,可能會有多個結果。所以快照包含這些結果的串列。即使只有一個結果,快照也會包含一個結果的串列。
您onDataChange將需要通過回圈處理此串列中的代碼dataSnapshot.getChildren()。像這樣的東西:
DatabaseReference plist = dref.child("Playlist");
plist.orderByChild("Playlist_ID").equalTo(2).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot: dataSnapshot.getChildren()) { // ?? Loop over results
String music_id = snapshot.child("Music_ID").getValue(String.class); // ?? Get value for this result
Log.i("Value_id", music_id);
str_musictitle.setText(music_id);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
throw error.toException(); // ?? Never ignore possible errors
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/363618.html
