I have a problem when I want to get value from Firebase database and return value from the method.
I know it's asynchronous and onDataChange
is executed after "return" value from a method, I found many topics with this problem but I can't find what I must do to return it.
It's my simple method:
private int getScore(String word) {
Log.e("DTAG", "order 1");
String userId = getFirebaseUserId();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference().child("Words").child(word).child(userId).child("score");
rootRef.addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
oldScore = Integer.parseInt(dataSnapshot.getValue().toString());
Log.e("DTAG", "order 3");
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
Log.e("DTAG", "order 2");
return oldScore;
}