2013-06-11 2 views
0

Например, у меня есть 5 флажков (cb1 - cb5). cb1 превосходит другие, что означает, что он может быть проверен только при проверке всех остальных 4. И если я проверю cb1, все остальные 4 должны автоматически пройти проверку. Это мой текущий код Java (этот код в методе OnCreate):Как мне заставить CheckBox что-то делать, когда оно проверено?

final CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox1); 
final CheckBox cb2 = (CheckBox) findViewById(R.id.checkBox2); 
final CheckBox cb3 = (CheckBox) findViewById(R.id.checkBox3); 
final CheckBox cb4 = (CheckBox) findViewById(R.id.checkBox4); 
final CheckBox cb5 = (CheckBox) findViewById(R.id.checkBox5); 
cb1.setOnCheckedChangeListener(new OnCheckedChangeListener() 
{ 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    { 
     if (cb1.isChecked()) 
     { 
      cb2.isChecked(); 
      cb3.isChecked(); 
      cb4.isChecked(); 
      cb5.isChecked(); 
     } 
    } 
}); 

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

+1

Используйте 'setSelected (истина)', если вы хотите, чтобы установить флажок. ('isChecked()' только проверяет, установлен ли флажок, он не выбирает/не отменяет его). – Maroun

+0

Вы также должны установитьOnCheckedChangeListener для всех своих флажков, а не только cb1. Кроме того, вы должны просто отключить cb1, пока не будут отмечены все остальные флажки. Это сделает пользователя более понятным, что происходит. –

+2

@Maroun Похоже, он просто использует флажок от java.awt, а не от swing, поэтому команда setState (true) - но имейте в виду, что установка такого состояния не генерирует флажок выбранного события –

ответ

0

Создать класс для CheckBox слушателя

public class CheckBoxListener implements OnCheckedChangeListener { 

    public CheckBoxListener() { 

    } 


    @Override 
    public void onCheckedChanged(CompoundButton view, boolean isChecked) { 
     switch(view.getId()) { 
     case R.id.checkBox1: 
      //do something 
     case R.id.checkBox2: 

     case ... 
     } 

    } 
} 

Затем установите этот приемник для всех флажков:

final CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox1); 
final CheckBox cb2 = (CheckBox) findViewById(R.id.checkBox2); 
final CheckBox cb3 = (CheckBox) findViewById(R.id.checkBox3); 
final CheckBox cb4 = (CheckBox) findViewById(R.id.checkBox4); 
final CheckBox cb5 = (CheckBox) findViewById(R.id.checkBox5); 
cb1.setOnCheckedChangeListener(new CheckBoxListener()); 
cb2.setOnCheckedChangeListener(new CheckBoxListener()); 
cb3.setOnCheckedChangeListener(new CheckBoxListener()); 
cb4.setOnCheckedChangeListener(new CheckBoxListener()); 
+0

Я не делал этого точно так, как в конце. Я использовал IF loop, и я не устанавливал слушателя на каждую кнопку (только большинство из них), и он отлично работает! Спасибо :) – Guy

Смежные вопросы