android, кнопки и флажки результаты

#android #string #if-statement #button #checkbox

Вопрос:

Просто хочу начать с того, что я довольно новичок в кодировании для Android, но я стараюсь изо всех сил.

То, что я пытаюсь сделать, — это получить несколько результатов, когда установлено несколько флажков. его довольно сложно объяснить, код может помочь немного больше

 public class MainActivity extends AppCompatActivity{

    Checkbox cb1, cb2;
    Button b1, b2, b3, b4, b5;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    cb1 = (findViewById(R.id.cb1);
    cb2 = (findViewById(R.id.cb2);
    b1 = (findViewById(R.id.b1);
    b2 = (findViewById(R.id.b2);
    b3 = (findViewById(R.id.b3);
    b4 = (findViewById(R.id.b4);
    b5 = (findViewById(R.id.b5);
}

@Override
    public void onCheckedChanged (CompoundButton buttonView,boolean isChecked) {

if (cb1.isChecked()) {
    b1.setBackgroundColor(ContextCompat.getColor(this, R.color.grey));
    b2.setBackgroundColor(ContextCompat.getColor(this, R.color.grey));
    b3.setBackgroundColor(ContextCompat.getColor(this, R.color.grey));
}
if (cb2.isChecked()) {
    b3.setBackgroundColor(ContextCompat.getColor(this, R.color.grey));
    b4.setBackgroundColor(ContextCompat.getColor(this, R.color.grey));
    b5.setBackgroundColor(ContextCompat.getColor(this, R.color.grey));
}
else {
    b1.setBackgroundColor(ContextCompat.getColor(this, R.color.green));
    b2.setBackgroundColor(ContextCompat.getColor(this, R.color.green));
    b3.setBackgroundColor(ContextCompat.getColor(this, R.color.green));
    b4.setBackgroundColor(ContextCompat.getColor(this, R.color.green));
    b5.setBackgroundColor(ContextCompat.getColor(this, R.color.green));
}
}
 

итак, в основном я пытаюсь сделать так, чтобы, если установлен только флажок 1, мы видели, как меняется фон кнопок 1-3, и если нажимается только флажок 2, то меняются кнопки 3-5, а если нажимаются обе, то меняются все кнопки. Этого я добиваюсь без проблем.

Проблема, с которой я сталкиваюсь, заключается в том, чтобы заставить их вернуться. так, например, скажем, у меня есть оба флажка cb1 и 2, затем я снимаю флажок cb2, поле остается таким, как если бы cb1 и 2 были нажаты, я пытаюсь получить его, поэтому, когда cb2 снят, возвращается результат только для проверки cb1 (кнопки 4 и 5 снова станут зелеными).

Я проверил это по всему Интернету и не могу найти ответ или хотя бы путь, который указал бы мне в правильном направлении.

Я попытался использовать настройку «переключатель/корпус», которая не сработала (выяснил, почему после), затем я попытался замкнуть переключатель, снова не сработало. Я попытался использовать оператор else if, а затем обнаружил, что это в основном то же самое, что и переключатель, о котором я думал, возможно, с использованием строкового массива, но я не уверен на 100%, что это даст желаемый результат.

У меня все еще есть код от неудачной попытки переключения/обращения, если это необходимо

Комментарии:

1. Я предлагаю установить точку останова внутри onCheckedChanged() и запустить ваше приложение в отладчике Android Studio. Затем вы можете просмотреть код, чтобы увидеть, что происходит.

2. Кроме того, для этого нет причин ContextCampt.getColor() , вы можете просто сделать setBackgroundColor(R.color.grey) .

3. Подсказка: используйте два отдельных if...else утверждения, а не пытайтесь каким-то образом их объединить.

4. Я попытался использовать 2 отдельных оператора if else, по какой-то причине он продолжал пропускать первый оператор if else, когда был установлен флажок cb1, все кнопки оставались зелеными, но когда я добавил в него cb2, код для запуска обоих был там

5. Ах ладно, я попробую, я думал, что это было бы, если бы другие заявления, которые я просто не мог заставить работать, я верну их в таком виде и посмотрю, что я могу заставить работать