我正在尝试在选中(或不选中)复选框时启用/禁用搜索栏。
我正在使用它来创建和引用:
CheckBox checkBoxProva = (CheckBox) findViewById(R.id.checkbox_prova);
boolean varCheckBoxProva = checkBoxProva.isChecked();
如果要禁用/启用视图,这很简单:
if (!varCheckBoxProva) {
seekBarProva.setEnabled(false);
}
所有这些都在onCreate中。
当应用程序启动时,搜索栏被禁用(因此if工作),但如果我检查CheckBox,它不会更改为启用。
编辑:我已经成功地感谢@rohan bhatia的回复了。答案 0 :(得分:1)
您正在onCreate
方法中执行所有这些操作,该方法仅在首次创建活动时被调用。您需要设置一个侦听器,单击该复选框时将触发该侦听器。请参阅:https://developer.android.com/guide/topics/ui/controls/checkbox.html
答案 1 :(得分:0)
只需插入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);
}
}
});
答案 2 :(得分:0)
您需要一个监听器,通知何时选中或取消选中复选框。
checkBoxProva.setOnCheckedChangeListener(new new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
seekBarProva.setEnabled(isChecked);
}
}
);
因此,每当您单击复选框时,将执行onCheckedChanged()方法。您仍需要在onCreate中指定它 -
seekBarProva.setEnabled(checkBoxProva.isChecked());
由于onCheckedChanged()仅侦听已检查状态的更改,因此要指定初始阶段,您也需要上面的行。