【发布时间】:2015-07-13 17:24:19
【问题描述】:
我正在制作一个使用 Firebase 实时数据库的 android 应用程序,当我检索数据时我得到一个 ClassCastException: java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
这是我的 Java 代码
mref.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Map<String, Object> newPost = (Map<String, Object>) dataSnapshot.getValue();
System.out.println("First Name: " + newPost.get("FirstName"));
System.out.println("Last Name: " + newPost.get("LastName"));
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
这是一个日志猫
Process: com.firebasedemo, PID: 10509
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
at com.firebasedemo.MainActivity$1$2.onChildAdded(MainActivity.java:75)
at com.firebase.client.core.ChildEventRegistration.fireEvent(ChildEventRegistration.java:48)
at com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45)
at com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
dataSnapshot.getValue();不能投地图!改用它 Map
newPost = new HashMap (dataSnapshot.getValue());和 dataSnapshot.getValue();返回地图对吗? -
异常表明您得到的不是
Map<String,Object>。您能否发布您正在提取的数据的 JSON 或System.out.println(dataSnapshot.getValue().getClass())? -
感谢@MicheleLacorte,当我将 Map 更改为 HashMap 时,它工作正常