Ich erstelle eine App mit Firebase. Es gibt ein Problem, das ich nicht lösen kann, und habe es hier nicht besprochen.Android - onDataChange() seltsames Verhalten
In dieser Methode möchte ich überprüfen, ob einige Daten bereits im Server vorhanden sind. Wenn nicht - ich möchte es hinzufügen (der Code des Hinzufügens funktioniert gut. Die Firebase-Datenbank wird geändert, wie ich möchte). also verwende ich OnDataChange Methode, wie folgend:
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];
}
Aber was wirklich passiert, ist dieser Ausgang:
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
Und wegen, dass ich erhalten falsche Ergebnisse in dieser Funktion. Können Sie bitte helfen?
sorry- Ich ersetzte "Start" durch "Beginne", aber es spielt keine Rolle. – ayelet