Android集成Firebase时出现Cannot resolve symbol 'dataSnapshot'报错
问题根因
你这个报错是变量名不匹配导致的语法错误,和Firebase依赖配置无关:
onDataChange方法回调的参数你声明的是@NonNull DataSnapshot snapshot,参数名是snapshot- 但你在方法内部调用时写的是
dataSnapshot.getValue(),用了不存在的变量名dataSnapshot,编译器自然识别不到。
修复方案
第一步:修正变量名
把出错行的dataSnapshot替换成你实际声明的参数名snapshot即可。
第二步:修正getValue的调用写法
Firebase Realtime Database的getValue()方法不能直接传字段名字符串,你需要先拿到对应子节点再取值,修正后的完整代码如下:
private void Startplaylist(String mood) { DatabaseReference p_ref = FirebaseDatabase.getInstance().getReference("Playlist"); p_ref.child("Playlist_ID").equalTo(0).addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot snapshot) { // 先判断快照是否存在数据 if (snapshot.exists()) { // 写法1:直接取当前节点的值 music_id = snapshot.getValue(String.class); // 写法2:如果要取当前节点下的子字段Playlist_Id的值,用下面的写法 // music_id = snapshot.child("Playlist_Id").getValue(String.class); str_musictitle.setText(music_id); } } @Override public void onCancelled(@NonNull DatabaseError error) { // 建议加上错误日志打印,方便后续排查问题 Log.e("FirebaseError", error.getMessage()); } }); }
额外优化建议
你当前的build.gradle里重复声明了两次firebase-database依赖,建议删掉低版本的那行,避免版本冲突:
// 删掉这行重复的低版本依赖 implementation 'com.google.firebase:firebase-database:19.2.0'
内容的提问来源于stack exchange,提问作者Kayla
相关产品推荐
相关产品推荐

