我在使用Java和Firebase制作值的增量时遇到了问题,它无法更新全局变量。当我在onStart处调用EventListener时,它成功地显示了变量的正确值(60)。但是,在我想通过按钮单击将其增加10时,它会显示0。
long value;
@Override
protected void onStart() {
super.onStart();
final TextView mValue = (TextView) findViewById(R.id.some_textview);
mRef = new Firebase(some_correct_url);
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
value = (long) dataSnapshot.getValue();
mValue.setText(value+"");
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
当用户点击按钮时,将调用以下函数。
public void addTen(View view) {
mRef = new Firebase(my_private_url);
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
value =(long) dataSnapshot.getValue();
value = value + 10;
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
mRef.setValue(value);
}
总的来说,第一部分检索了变量的正确值,但第二部分没有增加正确的值。提前感谢!
编辑:顺便说一下,我将Firebase规则设置如下:
{
"rules": {
".read": "true",
".write": "true"
}
}
这是关于开发时间的。