Ich versuche, eine Methode zu machen, die int-Variable zurückgibt, aber die Methode wirkt sich nicht auf die Variable aus.Kann die deklarierte Variable nicht beeinflussen
Dies ist mein Code:
int count;
public int getVotesForEvent(final String event_title) {
firebaseRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child("Votes").exists()) {
boolean flag = false;
for (DataSnapshot event : dataSnapshot.child("Votes").getChildren()) {
String event_title2 = event.getKey();
if (event_title2.equals(event_title)) {
flag = true;
Toast.makeText(EventInfo.this, ""+Integer.parseInt(event.child("event_votes").getValue().toString()), Toast.LENGTH_SHORT).show();
count = Integer.parseInt(event.child("event_votes").getValue().toString());
}
}
if (flag != true) {
count = 0;
}
}
else {
count = 0;
}
}
});
return count;
}
Das Problem ist, dass die Zeile:
count = Integer.parseInt(event.child("event_votes").getValue().toString());
Diese Zeile nicht die Variable count
wird bewirkt.
Was mache ich hier falsch?
Was ist der Wert von "event_votes"? – user1301428
Versuchen Sie genauer zu beschreiben, was genau Sie erwarten. Erwarten Sie, dass nach dem Aufruf von 'getVotesForEvent()' der Wert von 'count' geändert wird? Weil es nicht :) –
Jemand von innerhalb firebaseRef wird 'onDataChange()' aufrufen. Nur wenn dies der Fall ist, sehen Sie ein change in Ihrer Variablen. – GVillani82