2015-11-30 2 views
1

// это мой код ниже. я хочу, чтобы пользователь мог отметить один из флажков слева, «центр», справа », прежде чем они смогут перейти к« ТЕСТ 3 ». кнопка «NEXT» не следует нажимать до один флажок не отмечен в основномкак получить ответ от радиогруппы флажков, прежде чем включить кнопку в студии android

public class Test2 extends AppCompatActivity { 

private static Button button102; 
private CheckBox checkBox1, checkBox2, checkBox3; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_test2); 

    checkBox1 = (CheckBox) findViewById(R.id.checkBox1); 
    checkBox2 = (CheckBox) findViewById(R.id.checkBox2); 
    checkBox3 = (CheckBox) findViewById(R.id.checkBox3); 

    OnClickButtonListener102(); 
} 

public void onCheckboxClicked(View view) { 

    switch(view.getId()) { 

     case R.id.checkBox1: 

      checkBox2.setChecked(false); 
      checkBox3.setChecked(false); 

      break; 

     case R.id.checkBox2: 

      checkBox3.setChecked(false); 
      checkBox1.setChecked(false); 

      break; 

     case R.id.checkBox3: 

      checkBox1.setChecked(false); 
      checkBox2.setChecked(false); 

      break; 
    } 
} 

//by clicking 'next' you reset the page 
public void OnClickButtonListener102() { 

    button102 = (Button) findViewById(R.id.button1002); 
    button102.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent("com.example.Test2"); 
        startActivity(intent); 
       } 
      } 
    ); 

} 
} 

ответ

0

Объявить кнопку как инвалиды

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    button102 = (Button) findViewById(R.id.button1002); 
    button102.setEnabled(false); 
} 

и включить кнопку при нажатии радио чмокнуло Button.setEnabled(boolean):

button102 = (Button) findViewById(R.id.button1002); 
button102.setEnabled(true); 
switch(view.getId()) { 
    case R.id.checkBox1: 
     checkBox2.setChecked(false); 
     checkBox3.setChecked(false); 
     break; 
    case R.id.checkBox2: 
     checkBox3.setChecked(false); 
     checkBox1.setChecked(false); 
     break; 
    case R.id.checkBox3: 
     checkBox1.setChecked(false); 
     checkBox2.setChecked(false); 
     break; 
} 

Разъяснения:

  • кнопки можно отключить по умолчанию в XML макете
  • Я не вижу, как вы заявляете listener для radiobuttons, но я предполагаю, что это может быть вызвано только действительными элементами Вот почему я включаю button всегда и не в case заявлении
  • Если вы хотите использовать button или radiobutton s несколько раз, вы можете объявить его как атрибуты класса и получить объект в onCreate или onStart шаги

UPDATE:

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

FAST WAY? не позволяют отменить выбор, если другое не выбрано.

button102 = (Button) findViewById(R.id.button1002); 
button102.setEnabled(true); 
switch(view.getId()) { 
    case R.id.checkBox1: 
     checkBox1.setChecked(true); 
     checkBox2.setChecked(false); 
     checkBox3.setChecked(false); 
     break; 
    case R.id.checkBox2: 
     checkBox3.setChecked(false); 
     checkBox2.setChecked(true); 
     checkBox1.setChecked(false); 
     break; 
    case R.id.checkBox3: 
     checkBox1.setChecked(false); 
     checkBox2.setChecked(false); 
     checkBox3.setChecked(true); 
     break; 
} 

Но если вы хотите, чтобы выбрать только один флажок, вы можете сделать логику как в this answer, но я бы сильно рекомендую изменить CheckBox элементы на радиокнопки, которые предназначены для этого,

+0

спасибо миллион, вы гениальный! есть только одна проблема tho, если я поставлю галочку в поле, а затем отключаю ее, она позволяет мне перейти к следующему действию, поскольку кнопка больше не расходится ... как я могу это исправить? Еще раз спасибо –

+0

проверить мое обновление @EsidorPashaj –

+0

да, он отлично работает сейчас, спасибо миллион за вашу помощь Jordi. я предполагаю, что вы испанский с вашего имени ... так что HALA MADRID: D gracias amigo –

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