Как изменить значение переменной после прочтения ее из Firebase в Android? - PullRequest
0 голосов
/ 10 февраля 2019

Я хочу изменить значение переменной после чтения из Firebase по нажатию кнопки.Например, если значение равно 0 в базе данных после нажатия кнопки, оно должно измениться на 1, а если оно равно 1, то должно измениться на 2. Кроме того, оно должно сброситься до 0 после 4.

 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());
                    }
                });

Я ожидаюзначение в базе данных можно изменить только по нажатию кнопки.Но значение изменяется в непрерывном цикле до 0-1-2-3-0-1-2-3.

1 Ответ

0 голосов
/ 10 февраля 2019

Ваш код добавляет прослушиватель, который вызывается при каждом изменении данных в указанном месте.И это добавляет еще одного нового слушателя каждый раз, когда нажимается кнопка.Таким образом, каждый раз, когда нажимается кнопка, вы будете умножать количество выводимой информации.

Если вы хотите читать данные один раз , вместо добавления слушателя, которыйпрослушивает все время (пока не будет удалено), используйте addListenerForSingleValueEvent .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...