繁体   English   中英

为什么在与一个复选框关联的操作之后,两个复选框都被禁用?

[英]Why after action associated with one checkbox both checkboxes are are disabled?

大家:我想实现应用程序:

  1. 点击复选框
  2. 移动到新动作
  3. 完成新动作
  4. 返回复选框操作
  5. 将单击的复选框设置为选中并禁用

在我的代码中,当我尝试实现它时,第二个复选框也被选中并禁用,尽管我没有点击它。

请帮助:请参阅下面的代码:

    P2106 = findViewById(R.id.checkbox_p2106);
    MP2106 = findViewById(R.id.checkbox_mp2106);

    pref = PreferenceManager.getDefaultSharedPreferences(this);
    editor = pref.edit();

    CheckboxCare(P2106);
    CheckboxCare(MP2106);
}

public void CheckboxCare(@NonNull View v){
    switch (v.getId()){
        case R.id.checkbox_p2106:
        case R.id.checkbox_mp2106:
            if(pref.contains("checked") && pref.getBoolean("checked", false) == true){
                setChecked((CheckBox) v);
                disableCheckbox((CheckBox) v);
            }else{
                setNotChecked((CheckBox) v);
            }
            checkboxListener((CheckBox) v);
            break;
    }
}

public void checkboxListener(@NonNull CheckBox checkBox){
    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(checkBox.isChecked()){
                editor.putBoolean("checked", true);
                editor.apply();
                Intent move = new Intent(GeneralRoute.this, ScanTest.class);
                startActivity(move);
            }else{
                editor.putBoolean("checked", false);
                editor.apply();
            }
        }
    });
}

public void setChecked(@NonNull CheckBox checkBox){
    checkBox.setChecked(true);
}
public void setNotChecked(@NonNull CheckBox checkBox){
    checkBox.setChecked(false);
}
public void disableCheckbox(@NonNull CheckBox checkBox){
    checkBox.setEnabled(false);
}

根据您的要求,为发送该 function 调用的每个复选框创建 object

public void CheckboxCare(@NonNull View v){
switch (v.getId()){
    case R.id.checkbox_p2106:
                     {
                     // write code here
                     }
    case R.id.checkbox_mp2106:
        if(pref.contains("checked") && pref.getBoolean("checked", false) == true){
            setChecked(checkbox_p2106);// enable one
            disableCheckbox(checkbox_p2106);// disable second
        }else{
            setNotChecked((CheckBox) v);
        }
        checkboxListener((CheckBox) v);
        break;
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM