使用 CheckBox 禁用视图后无法重新启用视图
Can't re-enable a view after disabling it with CheckBox
我正在尝试 enable/disable 选中(或未选中)复选框时的搜索栏。
我正在使用它来创建和引用:
CheckBox checkBoxProva = (CheckBox) findViewById(R.id.checkbox_prova);
boolean varCheckBoxProva = checkBoxProva.isChecked();
这个简单的 if disable/enable 视图:
if (!varCheckBoxProva) {
seekBarProva.setEnabled(false);
}
所有这些都在 onCreate 中。
当应用程序启动时,搜索栏被禁用(因此 if 有效),但如果我选中 CheckBox,它不会更改为启用。
编辑:感谢@rohan bhatia 的回复,我已经成功了。
只需插入一个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);
}
}
});
您在 onCreate
方法中执行所有这些操作,该方法仅在首次创建 activity 时调用。您需要设置一个侦听器,该侦听器将在单击复选框时触发。参见: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() 仅监听选中状态的变化,因此要指定初始阶段,您也需要上面的行。
我正在尝试 enable/disable 选中(或未选中)复选框时的搜索栏。
我正在使用它来创建和引用:
CheckBox checkBoxProva = (CheckBox) findViewById(R.id.checkbox_prova);
boolean varCheckBoxProva = checkBoxProva.isChecked();
这个简单的 if disable/enable 视图:
if (!varCheckBoxProva) {
seekBarProva.setEnabled(false);
}
所有这些都在 onCreate 中。
当应用程序启动时,搜索栏被禁用(因此 if 有效),但如果我选中 CheckBox,它不会更改为启用。
编辑:感谢@rohan bhatia 的回复,我已经成功了。
只需插入一个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);
}
}
});
您在 onCreate
方法中执行所有这些操作,该方法仅在首次创建 activity 时调用。您需要设置一个侦听器,该侦听器将在单击复选框时触发。参见: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() 仅监听选中状态的变化,因此要指定初始阶段,您也需要上面的行。