Снимите флажок при выборе другого - PullRequest
0 голосов
/ 04 мая 2018

Я знаю, это звучит просто, но выслушай меня. У меня есть 2 флажка, когда один из них выбран, я хочу снять другой флажок.

Я пробовал следующее:

CheckBox chk1, chk2;

if (chk1.isChecked()) {
    chk2.setChecked(false);
}

if (chk2.isChecked()) {
    chk1.setChecked(false);
}

Я также пробовал:

chk1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
        chk2.setChecked(false);
    }
});

chk2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
        chk1.setChecked(false);
    }
});

Я знаю, что вместо этого я должен использовать кнопку-переключатель, но флажок работает с дизайном, поэтому я ищу способ заставить эту работу.

Есть идеи?

Ответы [ 3 ]

0 голосов
/ 04 мая 2018

Благодаря @ NoEm Мне удалось заставить его работать, но реализация OnClickListener выглядит следующим образом:

chk1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        chk1.setChecked(true);
        chk2.setChecked(false);
    }
});
chk2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        chk2.setChecked(true);
        chk1.setChecked(false);
    }
            });
0 голосов
/ 04 мая 2018

Два варианта: Во-первых, Java

final CheckBox cb1 = findViewById(R.id.checkBox1);
    final CheckBox cb2 = findViewById(R.id.checkBox2);
    cb1.setChecked(true);

    cb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
            cb2.setChecked(!isChecked);
        }
    });

    cb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
            cb1.setChecked(!isChecked);
        }
    });

или Котлин как второй

val cb1 = this.findViewById<CheckBox>(R.id.checkBox1)
    val cb2 = this.findViewById<CheckBox>(R.id.checkBox2)

    cb1.isChecked = true

    cb1.setOnCheckedChangeListener { _, isChecked ->  cb2.isChecked = !isChecked }
    cb2.setOnCheckedChangeListener { _, isChecked ->  cb1.isChecked = !isChecked }
0 голосов
/ 04 мая 2018

Я думаю, что в вопросах дизайна, флажки предназначены для случаев, когда вы хотите, чтобы пользователь использовал несколько вариантов. Я думаю, что вы должны попытаться использовать радио кнопку, вот ссылка:

Ссылка на радиобаттон

...