使用复选框禁用视图后无法重新启用视图



我正在尝试在选中(或不选中(复选框时启用/禁用搜索栏。

我正在使用它来创建和引用:

CheckBox checkBoxProva = (CheckBox) findViewById(R.id.checkbox_prova);
boolean varCheckBoxProva = checkBoxProva.isChecked();

这个简单的如果禁用/启用视图:

if (!varCheckBoxProva) {
    seekBarProva.setEnabled(false);
}

所有这些都在onCreate中。

当应用程序启动时,搜索栏被禁用(因此 if 有效(,但如果我选中复选框,它不会更改为启用。

编辑:我已经成功感谢@rohan巴蒂亚的回复。

您将在 onCreate 方法中执行所有这些操作,该方法仅在首次创建活动时调用。您需要设置一个侦听器,该侦听器将在单击复选框时触发。请参阅:https://developer.android.com/guide/topics/ui/controls/checkbox.html

您需要

一个侦听器,用于在选中或取消选中复选框时发出通知。

checkBoxProva.setOnCheckedChangeListener(new new CompoundButton.OnCheckedChangeListener() {
       @Override
       public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
            seekBarProva.setEnabled(isChecked);
       }
   }
);    

因此,每当您单击复选框时,将执行 onCheckedChanged(( 方法。您仍然需要在 onCreate - 中指定此项

seekBarProva.setEnabled(checkBoxProva.isChecked());

由于 onCheckedChanged(( 只侦听检查状态的变化,所以要指定初始阶段,你也需要上面的一行。

只需插入一个else

if (!varCheckBoxProva) {
    seekBarProva.setEnabled(false);
}else{
    seekBarProva.setEnabled(true);
}

替代解决方案:

就个人而言,我建议在onCreate方法中的复选框中添加侦听器。

checkBoxProva.setOnClickListener(new OnClickListener() {
            @Override
       public void onClick(View v) {
           if(varCheckBoxProva){
               seekBarProva.setEnabled(true);
           }else{
               seekBarProva.setEnabled(false);
           }
       }
});

最新更新