2014-01-11 5 views
4

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

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

Может кто-нибудь указать, где я мог бы ошибиться где-то, поскольку я не вижу недостатка в логике, каких-либо идеях?

В любом случае это решение, которое я пытаюсь реализовать, но он не работает в программе:

public void onRadioButtonClicked(View view) { 
     // Is the button now checked? 
     boolean checked = ((RadioButton) view).isChecked(); 

     // Check which radio button was clicked 
     switch(view.getId()) { 
      case R.id.radBtnMM: 
       if (checked) 
        //set inch button to unchecked 
        radioInch.setChecked(false); 
       break; 
      case R.id.radBtnInch: 
       if (checked) 
        //set MM button to unchecked 
        radioMM.setChecked(false); 
       break; 
     } 
    } 

ответ

6

Когда Ваш public void onRadioButtonClicked(View view) называется? Это от слушателя?

Это будет работать:

layout.xml:

<RadioButton 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/radBtnMM" 
/> 
<RadioButton 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/radBtnInch" 
/> 

YourActivity.java:

public class MainActivity extends Activity implements OnCheckedChangeListener { 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    setContentView(R.layout.activity_main); 
    rb1 = (RadioButton) findViewById(R.id.radBtnInch); 
    rb1.setOnCheckedChangeListener(this); 
    rb2 = (RadioButton) findViewById(R.id.radBtnMM); 
    rb2.setOnCheckedChangeListener(this); 
    return true; 
    } 
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
    if (isChecked) { 
     if (buttonView.getId() == R.id.radBtnInch) { 
     rb2.setChecked(false); 
     } 
     if (buttonView.getId() == R.id.radBtnMM) { 
     rb1.setChecked(false); 
     } 
    } 
    } 
+0

Я попытался это исправить, но я m, получив следующие ошибки, когда переключатель радиосвязи установлен на t o 'this':' Метод setOnCheckedChangeListener (CompoundButton.OnCheckedChangeListener) в типе CompoundButton не является , применимым для аргументов (MainActivity) ' –

+0

Извините, я забыл, что ваша активность должна внедрить OnCheckedChangeListener. Я добавил эту строку в свой ответ: 'public class MainActivity extends Activity реализует OnCheckedChangeListener {' –

+0

Это работало, приветствие –

1

Try это ...

public void onRadioButtonClicked(View view) { 
    // Is the button now checked? 
    boolean checked = ((RadioButton) view).isChecked(); 

    // Check which radio button was clicked 
    switch (view.getId()) { 
    case R.id.radioBtnMM: 
     // set inch button to unchecked 
     radioBtnInch.setChecked(!checked); 
     break; 
    case R.id.radioBtnInch: 
     // set MM button to unchecked 
     radioBtnMM.setChecked(!checked); 
     break; 
    } 
} 
0

Попробуйте:

@Override 
public void onClick(View v) 
{ 
    switch (v.getId()) 
    { 
     case R.id.radBtnMM: 
       if (checked) 
       { 
        radioInch.setChecked(false); 
       } 
       else 
       { 
        radioInch.setChecked(true); 
       } 
       break; 
      case R.id.radBtnInch: 
       if (checked) 
       { 
        radioMM.setChecked(false); 
       } 
       else 
       { 
        radioMM.setChecked(true); 
       } 
       break; 
     } 
    } 

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

  • Нет связанных вопросов^_^