簡體   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