从按钮单击Firebase读取变量后,我想更改变量的值。例如,如果在单击按钮后,firebase中的值为0,则应将其更改为1,如果为1,则应将其更改为2。此外,在4之后,应将其重置为0。
on.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Context context = getApplicationContext();
EditText editText = findViewById(R.id.input);
final String link = editText.getText().toString();
fled1 = new Firebase("https://iot-5z6h8.firebaseio.com/");
// Read from the database
myRef = FirebaseDatabase.getInstance().getReference();
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
state = dataSnapshot.child("Touch").getValue().toString();
value = Integer.parseInt(state);
Log.d(TAG, "Value is: " + state);
value+=1;
if(value==4){value=0;}
Firebase fled1Child = fled1.child("Touch"); fled1Child.setValue(value);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {error.toException());
}
});
我希望Firebase中的值仅在单击按钮时才会更改。但是该值在连续循环中更改为0-1-2-3-0-1-2-3。
答案 0 :(得分:0)
您的代码正在添加一个侦听器,该侦听器在给定位置的数据每次更改时都会被调用。每次单击该按钮时,都会添加另一个新的侦听器。因此,每次单击按钮时,您将乘以看到的输出量。
如果您想read data a single time,而不是添加一个始终监听(直到被删除)的监听器,请使用addListenerForSingleValueEvent。