【发布时间】:2016-09-19 06:48:06
【问题描述】:
我正在尝试读取存储在 Firebase 数据库中的值。这是数据库的样子:
网址:https://xxxx.firebaseio.com/Cohesion/Passes/Away/Arsenal
现在,在 Android 方面,这就是我尝试检索数据的方式:
Firebase mRef = new Firebase("https://xxxx.firebaseio.com/Cohesion/Passes/Away/Arsenal");
mRef.addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
Arsenal vals = dataSnapshot.getValue(Arsenal.class);
Log.e("retValue",""+vals);
}
@Override
public void onCancelled(FirebaseError firebaseError)
{
Log.e("REAL_ERROR",""+firebaseError);
}
});
Arsenal.class
public class Arsenal {
private int Cross;
private int LongBall;
private int ShortPass;
private int ThroughBall;
public Arsenal()
{
}
public Arsenal(int Cross,int LongBall,int ShortPass,int ThroughBall)
{
this.Cross = Cross;
this.LongBall = LongBall;
this.ShortPass = ShortPass;
this.ThroughBall = ThroughBall;
}
public int getCross() {
return Cross;
}
public int getLongBall() {
return LongBall;
}
public int getShortPass() {
return ShortPass;
}
public int getThroughBall() {
return ThroughBall;
}
}
我已将控制台中的Rules 设置为true,以便可以公开访问以进行读写,因此我无需使用身份验证即可访问。
这里是 Logcat:
09-19 12:14:51.032 13585-13585/com.ihrd.myapplication E/AndroidRuntime: 致命异常: main 进程:com.ihrd.myapplication,PID:13585 主题:主题:{} com.firebase.client.FirebaseException:无法反弹输入 在 com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:185) 在 com.ihrd.myapplication.MainActivity$1.onDataChange(MainActivity.java:28) 在 com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:53) 在 com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45) 在 com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5461) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 造成的: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: 无法识别的字段“Cross”(com.ihrd.myapplication.Arsenal 类),不是 标记为可忽略(0 个已知属性:]) 在 [来源:java.io.StringReader@e1c14e3;行:1,列:12] (通过引用链:com.ihrd.myapplication.Arsenal["Cross"]) 在 com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:555) 在 com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:708) 在 com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1160) 在 com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:315) 在 com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121) 在 com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888) 在 com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034) 在 com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:183) 在 com.ihrd.myapplication.MainActivity$1.onDataChange(MainActivity.java:28) 在 com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:53) 在 com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45) 在 com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5461) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
可能是什么原因造成的?以及如何解决?请帮助。
【问题讨论】:
-
检查这里:stackoverflow.com/questions/32108969/… 可能是我见过的最好的解释。
标签: android firebase firebase-realtime-database