Firebaseのバグか、Androidのバグか、自分の責任かわかりません。私の問題は、子供をフェッチするときに何らかの理由でHashmapからDouble値を取得できないということです。どうして?したがって、firebase jsonオブジェクトに格納されているすべての数値は、HashMapからLongとして返されます。もっと奇妙なことは?デバッガを使用して、私は実際にAndroidスタジオがちょっとdouble/floatであることを知っていました。フェッチする値が2.5の場合、キー "string"のハッシュマップの値は2.5です。HashMap StringからDouble値を取得しようとしたときにエラーが発生しました.Firebaseからフェッチされたオブジェクト
この値を二重変数に割り当てると、上記のエラーが出力されます。私は反復がマップの値をチェックすることをデバッグする必要がある場合
これは、コード
final double[] rating = {0};
final int[] nRatings = {0};
Firebase ref = new Firebase("https://MYAPP.firebaseio.com/reviews");
Query queryRef = ref.orderByChild("idCommented").equalTo(mId);
queryRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot snapshot, String previousChild) {
System.out.println(snapshot.getKey());
Map map = (HashMap) snapshot.getValue();
rating[0] += (double) map.get("noStars"); // This line causes error
nRatings[0]++;
mRatingBar.setRating((float)rating[0]/nRatings[0]);
}
...
});
は、まだある、それはロング
これがなぜ起こるかすべてのアイデアを倍増するためにキャストすることができないことを印刷するのでしょうか?
をエラーメッセージは非常に明示的である:値は(整数)の長さであるので、二重にキャストすることはできません。値が浮動小数点として格納されていることを確認してください(つまり、「1」ではなく「1.0」を格納してください)。または、解析時にdoubleに変換します:http://stackoverflow.com/questions/13855786/java-many-ways-of-casting-a-long-object-to-double –
'Map map =(HashMap
roarster
ロースターマップは文字列のような他の値型を格納できる必要があるので、私はそれを行うことはできません。フランクはNumberへのキャストを行い、次にdoubleValueが働きました。問題は、「1.5」のような数字でさえ早く起こっていた – BlackBox