从Android中的Firebase读取变量后如何更改变量的值?

时间:2019-02-10 17:26:53

标签: java android firebase firebase-realtime-database

从按钮单击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。

1 个答案:

答案 0 :(得分:0)

您的代码正在添加一个侦听器,该侦听器在给定位置的数据每次更改时都会被调用。每次单击该按钮时,都会添加另一个新的侦听器。因此,每次单击按钮时,您将乘以看到的输出量。

如果您想read data a single time,而不是添加一个始终监听(直到被删除)的监听器,请使用addListenerForSingleValueEvent