【问题标题】:Can't re-enable a view after disabling it with CheckBox使用 CheckBox 禁用视图后无法重新启用视图
【发布时间】:2017-08-17 21:14:59
【问题描述】:

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

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

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

如果禁用/启用视图,这很简单:

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

所有这些都在 onCreate 中。

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

编辑:感谢@rohan bhatia 的回复,我成功了。

【问题讨论】:

    标签: java android xml checkbox seekbar


    【解决方案1】:

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

    【讨论】:

    • 没关系,它应该仍然可以工作。例如,您可以在 onCreate 中创建一个按钮侦听器,它应该仍然可以工作。
    • @OusmaneMahyDiaw 但 OP 从未说过他们正在使用监听器。我认为这个答案是正确的。我们只知道他们只是检查一次状态。
    • @petehallw 绝对同意。 :)
    【解决方案2】:

    您需要一个侦听器来通知复选框何时被选中或取消选中..

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

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

    seekBarProva.setEnabled(checkBoxProva.isChecked());
    

    由于 onCheckedChanged() 仅侦听检查状态的变化,因此要指定初始阶段,您也需要上述行。

    【讨论】:

      【解决方案3】:

      只需插入一个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);
                 }
             }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-20
        • 2011-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多