Firebaseでアプリを作成します。私は解決できない問題があり、ここでそれが話し合われていないことが分かりました。Android - onDataChange()strange behavior
この方法では、一部のデータが既にサーバーにあるかどうかを確認したいと考えています。そうでない場合 - 私はそれを追加したい(追加のコードはうまくいきます、Firebaseデータベースは私が望むように変更されています)。私は、次のような方法をOnDataChangeの使用しています:
public boolean insertNewList(String title)
{
System.out.println("start: ");
final boolean[] result = new boolean[1];
result[0]=false;
final String group = title;
mRootRef = some reference...
mRootRef.addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
System.out.println(0);
if (dataSnapshot.child(group).getValue() != null)
{
System.out.println(group + " is already exist");
System.out.println(1);
}
//write the data.
else
{
mRootRef=mRootRef.child(group);
mRootRef.push().setValue("some data");
System.out.println(2);
result[0]=true;
}
}
@Override
public void onCancelled(DatabaseError databaseError)
{
}
});
System.out.println(3);
return result[0];
}
しかし、何が起こるか本当にこの出力されます:
begin:
3 (just skip on onDataChange method and return false).
some print after calling the function
0 (goes back to function and enter to onDataChange method)
2 (finally goes where I want it to go)
0 (for some reason enters twice :( )
1
そして、そのため私は、この関数で間違った結果を受け取ります。 お願いしますか?
「start」を「begin」に置き換えても問題ありません。 – ayelet