android中的“println需要一条消息”错误

Posted

技术标签:

【中文标题】android中的“println需要一条消息”错误【英文标题】:"println needs a message" error in android 【发布时间】:2022-01-01 04:07:00 【问题描述】:

我想在 firebase 中读取 Playlist_ID2 的组的 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(); 并运行它,但我无法得到想要的结果。

【问题讨论】:

music_id 为空。您显然不能记录空值。我看到的明显的东西是它在数据库中的 Music_ID,我相信它是区分大小写的。 我修改为String music_id = dataSnapshot.child("Music_ID").getValue(String.class); ,还是不行。 【参考方案1】:

当您对 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
    
);

【讨论】:

非常感谢。谢谢你,终于解决了!!!

以上是关于android中的“println需要一条消息”错误的主要内容,如果未能解决你的问题,请参考以下文章

Android java.lang.NullPointerException:println需要一条消息[重复]

Android studio 报错问题

Android NDK 开发NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 使用 addr2line 命令行工具查找动态库中的报错代码位置 )

Android NDK 开发NDK C/C++ 代码崩溃调试 - Tombstone 报错信息日志文件分析 ( 使用 addr2line 命令行工具查找动态库中的报错代码位置 )

Android Studio 编译构建报错总结

android权限--android开发中的权限及含义(下)