Firebaseを使ってJavaで値を変更したところ、グローバル変数は更新されません。 onStartでEventListenerを呼び出すと、変数(60)の正しい値が正常に表示されます。そして、私は10で、それを増やしたいとき - ボタンのクリックで - それは私0Android:Firebase番号のインクリメント
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);
}
と呼ばれているが表示されます最初の部分は変数の正しい値を取得しますが、2番目の部分は正しい値を増やしません。前もって感謝します!
編集:ところで、私は、次のようFirebase-ルールを設定します。
{
"rules": {
".read": "true",
".write": "true"
}
}
これは、開発時間のためです。
何を意味する**増加しない** UIにログまたは更新値を印刷したか? – Kathi
はい私はその値をデバッグしていましたが、最初の部分ではonStartでは正しく表示されていましたが、addTen関数の2番目の部分では0の値を持つグローバル初期化が行われます – Michael
間違った値から始まります。それはゼロから始まりますが、それは60で始まります(firebaseからの値) – Michael