FirebaseのvalueEvenListenerに問題があります。Firebase updatechildren vs setvalue
Firebase ref = new Firebase(Constant.BASEURL).child("myLists");
ref.addValueEventListener(myValueEventListener);
次に、updateChildren()を使用してリスト値の1つを更新しようとします。
HashMap<String, Object> newEditionTimeHM = new HasMap<String, Object>
newEditionTimeHM.put("editionTimeStamp", ServerValue.TIMESTAMP);
ref.child(pushKey).updateChildren(newEditionTimeHM);
それは更新しますが、私のリスナーが更新をキャッチしたときに、それが報告クラッシュし、エラーを「と入力してバウンスすることができませんでした」。
私の2回目の試行では、私が望む新しい値で新しいshoppinListオブジェクトを作成し、setValue()を使ってそれを押します。
newEditionTimeHM.put("editionTimeStamp", ServerValue.TIMESTAMP);
ShoppingList shoppingList = new ShoppingList("Owner unknown", newEditionTimeHM);
ref.child(pushKey).setValue(shoppingList);
リスナーがそれをキャッチしても、問題は報告されません。
ここでの違いは何ですか?リスナーを満たすために全く新しいオブジェクトを作成する必要があるのはなぜですか? updateChildren()を使用する方が効率的ではありませんか? 答えはthis pageでしたが、見つからなかった
"バウンスに失敗した"場合は、結果のデータ(onDataChange)が他のケースと異なる場合があります。その違いをデバッグして確認し、結論を導きます。 – Wukash
@Wukashチェックしました。これらの2つの方法はまったく同じことを行う必要があります。その証拠は、私がファイヤーベースの最終結果をチェックするとき、私は最初のメソッドまたは2番目のメソッドを使用して全く同じものを取得するということです。違いは、リスナーがどのように反応するかです。 –
はい私は、サーバー上の値が最終結果で同じであることを理解しています。私が言ったことは、リスナーの方法の違いを確認し、それに応じて行動する必要があるということです。私たちがfirebaseライブラリの振る舞いを変えることができないことを意味するので、それはあなたの唯一の選択肢です... – Wukash