【问题标题】:Update the togglebutton status when the realtimedatabase in firebase changes from on / off当firebase中的实时数据库从开/关更改时更新切换按钮状态
【发布时间】:2020-06-25 11:12:58
【问题描述】:

我还在学习使用Android Studio,我很难根据Firebase中的realtimedatabase设置togglebutton的状态,当退出应用程序并再次进入该按钮时,数据库打开时是关闭的, 所以我想问的是,当数据库被激活时,Android上的togglebutton被激活,反之亦然, 谢谢。

公共类 MainActivity 扩展 AppCompatActivity {

TextView teks;
DatabaseReference dref;
String status;
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    teks=(TextView)findViewById(R.id.text1);
    Typeface customfont=Typeface.createFromAsset(getAssets(),"font/jd_led3.ttf");
    teks.setTypeface(customfont);
    teks=(TextView)findViewById(R.id.text1);
    dref = FirebaseDatabase.getInstance().getReference();
    dref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            status=dataSnapshot.child("Suhu").getValue().toString();
            teks.setText(status);
        }

        @Override
        public void onCancelled(DatabaseError error) {

        }
    });


    final ToggleButton button = (ToggleButton) findViewById(R.id.toggleButton);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FirebaseDatabase database = FirebaseDatabase.getInstance();
            button.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP);
            DatabaseReference myRef = database.getReference("RELAY1_STATUS");
            if(button.isChecked()){
                myRef.setValue("ON");
            }else{
                myRef.setValue("OFF");

            }
        }
    });


    final ToggleButton button1 = (ToggleButton) findViewById(R.id.toggleButton1);
    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FirebaseDatabase database = FirebaseDatabase.getInstance();
            button1.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP);
            DatabaseReference myRef = database.getReference("RELAY2_STATUS");
            if(button1.isChecked()){
                myRef.setValue("ON");
            }else{
                myRef.setValue("OFF");
            }
        }
    });

    final ToggleButton button2 = (ToggleButton) findViewById(R.id.toggleButton2);
    button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FirebaseDatabase database = FirebaseDatabase.getInstance();
            button2.performHapticFeedback(HapticFeedbackConstants.KEYBOARD_TAP);
            DatabaseReference myRef = database.getReference("RELAY3_STATUS");
            if(button2.isChecked()){
                myRef.setValue("ON");
            }else{
                myRef.setValue("OFF");
            }
        }
    });

}

}

对不起,如果我的帖子一团糟,我也是第一次使用stackoverflow

【问题讨论】:

    标签: android firebase android-studio firebase-realtime-database


    【解决方案1】:

    开启 ONCREATE 你需要添加值事件监听器,例如

    MyRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
    status=dataSnapshot.child("RELAY2_STATUS").getValue().toString();
    
    if(status.equals("ON"){
    button1.isChecked(true)
    }
    @Override
    public void onCancelled(DatabaseError error) {
    }
    });
    

    【讨论】:

    • 嗨,感谢您的评论,但是当我尝试它时,代码是错误的?
    • 问题解决了,我已经编辑并添加了一些代码,它可以工作了。
    【解决方案2】:
        dref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Log.d(TAG, "onDataChange: " + status);
                status = dataSnapshot.child("RELAY1_STATUS").getValue().toString();
                if (status.equals("ON")) {
                    a.setChecked(true);
                } else {
                    a.setChecked(false);
                }
            }
            @Override
            public void onCancelled(DatabaseError error) {
                Log.w(TAG, "onCancelled: ",error.toException() );
            }
        });
    

    【讨论】:

      猜你喜欢
      • 2020-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      相关资源
      最近更新 更多