【发布时间】:2016-03-23 11:44:16
【问题描述】:
我正在尝试创建一个返回 int 变量的方法,但该方法不影响该变量。
这是我的代码:
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;
}
问题在于:
count = Integer.parseInt(event.child("event_votes").getValue().toString());
此行不影响变量count。
我在这里做错了什么?
【问题讨论】:
-
“event_votes”的值是多少?
-
尝试更详细地描述您期望发生的事情。您是否期望在调用
getVotesForEvent()之后count的值会发生变化?因为它不会:) -
firebaseRef 内部的某个人将致电
onDataChange()。只有当这种情况发生时,您才会在变量中看到 chenge。 -
你的
Toast出现了吗.. 也就是 if 语句中的代码肯定会运行。 -
然后像这样改变你的
onDataChange()方法来测试它: public void onDataChange(DataSnapshot dataSnapshot) { count = 5; }
标签: java android firebase firebase-realtime-database