【发布时间】:2019-02-23 22:27:07
【问题描述】:
这是错误日志 我在从 firebase 实时数据库中检索数据时遇到问题。 java.lang.ClassCastException:java.lang.String 无法转换为 java.util.Map
E/AndroidRuntime: FATAL EXCEPTION: main
Process: root.example.com.chatrack, PID: 31556
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
at root.example.com.chatrack.ChatActivity.AmbilDataGroup(ChatActivity.java:156)
at root.example.com.chatrack.ChatActivity.access$200(ChatActivity.java:48)
at root.example.com.chatrack.ChatActivity$2.onDataChange(ChatActivity.java:140)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@16.0.6:75)
at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@16.0.6:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@16.0.6:55)
at android.os.Handler.handleCallback(Handler.java:794)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:6635)
at java.lang.reflect.Method.invoke(Native Method)
我不知道出了什么问题 这是我用来检索数据的代码
DatabaseReference add = mFirebaseDatabase.getReference().child("CHATRACK").child("USER").child(Child);
Log.d(TAG, "getFriendsInfo() returned: " + add);
add.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d(TAG, "onDataChange() returned: " + dataSnapshot);
Log.d(TAG, "onDataChange() returned: " + Child.size());
AmbilDataGroup((Map<String, Object>) dataSnapshot.getValue());
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
private void AmbilDataGroup(Map<String, Object> dataSnapshot) {
final ArrayList<String> Nama = new ArrayList<>();
for (Map.Entry<String, Object> entry : dataSnapshot.entrySet())
{
Map nama= (Map) entry.getValue();
Nama.add((String) nama.get("Nama"));
}
}
为什么会这样。在其他活动中,相同的代码很好,没有问题。 我不明白。请帮忙
编辑
这里是我的数据库结构 enter image description here
【问题讨论】:
-
我猜
Map namaGroup = (Map) entry.getValue();- 是getValue()一个String并且您正在尝试转换为Map? -
是的,你猜对了。我不知道发生了什么
-
请添加您的数据库结构,也请回复@AlexMamo
-
@AlexMamo 数据库结构。
-
@dwikyhardiansah 这行
Child的值是多少.child(Child)?
标签: java android firebase firebase-realtime-database