2016-01-05 2 views
0

Я искал в Google и StackOverflow для любого решения, и я нашел их, но ни один из них не работал в моем случае.Radio Group Android остается по умолчанию

У меня есть 3 RadioButtons, и, как и должно быть, только один можно выбрать.

Теперь я хочу знать, какая радио кнопка выбрана, когда я нажимаю кнопку «Посещение». Моя функция для VisitButton вызывается, но когда я пытаюсь прочитать RadioButton, результат всегда один и тот же.

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

Я пробовал различные подходы, onChangeCheckListener, onClickListener, но ни один из них, похоже, не работает.

Что я делаю неправильно?

Вот мой код-фрагмент:

MicrolabB = (RadioButton) findViewById(R.id.Microlab); 
     MoodleB = (RadioButton) findViewById(R.id.Moodle); 
     ISAB = (RadioButton) findViewById(R.id.ISA); 
     PortalSelect = (RadioGroup) findViewById(R.id.PortalSelect); 
     VISIT = (Button) findViewById(R.id.Visit); 
     MicrolabB.setOnClickListener(this); 
     ISAB.setOnClickListener(this); 
     MoodleB.setOnClickListener(this); 

    public void VisitWebPage(View v){ 
     if(v.getId()==R.id.Visit){ 

      if(MicrolabB.isChecked()) 
       ApduNFC.Portal =1; 
      if(ISAB.isChecked()) 
       ApduNFC.Portal=2; 
      if(MoodleB.isChecked()) 
       ApduNFC.Portal=3; 

      Intent intent = new Intent(Start.this,ApduNFC.class); 
      startActivity(intent); 
     } 

    } 

И мой XML:

<RadioGroup 
      android:id="@+id/PortalSelect" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:clickable="true" > 

      <RadioButton 
       android:id="@+id/Microlab" 
       android:layout_width="133dp" 
       android:layout_height="wrap_content" 
       android:text="Microlab" 
       android:clickable="true" 
       /> 

      <RadioButton 
       android:id="@+id/ISA" 
       android:layout_width="126dp" 
       android:layout_height="wrap_content" 
       android:text="IS-A" 
       android:clickable="true" 
       android:checked="true" /> 

      <RadioButton 
       android:id="@+id/Moodle" 
       android:layout_width="116dp" 
       android:layout_height="wrap_content" 
       android:text="Moodle" 
       android:clickable="true" /> 
     </RadioGroup> 

     <Button 
      android:id="@+id/Visit" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="52dp" 
      android:onClick="VisitWebPage" 
      android:text="Visit" /> 

ответ

0

решить эту проблему.

public void VisitWebPage(View v){ 
     final RadioGroup PortalSelect = (RadioGroup) findViewById(R.id.PortalSelect); 
     int ID = PortalSelect.getCheckedRadioButtonId(); 
     if(v.getId()==R.id.Visit){ 
     int rb1Id = MicrolabB.getId(); 
      if(ID == MicrolabB.getId()) 
       Log.d("RB Selected","1"); 
      if(ID == ISAB.getId()) 
       Log.d("RB Selected","2"); 
      if(ID == MoodleB.getId()) 
       Log.d("RB Selected","3"); 

      Intent intent = new Intent(Start.this,ApduNFC.class); 
      startActivity(intent); 
     } 
} 

После того как я поставил в линию

final RadioGroup PortalSelect = (RadioGroup) findViewById(R.id.PortalSelect); 

в VisitWebPage функции все, кажется, работает. У меня нет идеи, потому что я определил Radio Group раньше в этом классе. Но я рад, что он работает сейчас.

0

Во-первых, в этом примере вы находитесь, конечно, не нужно слушателей на радиокнопки.

Лучший вариант для получения выбранной кнопки - от PortalSelect.getCheckedRadioButtonId(). Вы проверите идентификатор RadioButton.

Не забудьте проверить, существует ли идентификатор; По умолчанию RadioGroup инициализируется ни одним из отмеченных флажков RadioButtons;

Обратитесь к сайту Google RadioGroup: http://developer.android.com/reference/android/widget/RadioGroup.html

+0

Что вы имеете в виду, проверяя, существует ли идентификатор? Вторая кнопка - по умолчанию. – GhostofRazgriz

0

В вашем VisitWebPage добавить первый PortalSelect.getCheckedRadioButtonId() как

public void VisitWebPage(View v){ 
    if(v.getId()==R.id.Visit){ 

     int selectedId = PortalSelect.getCheckedRadioButtonId(); 

     if(selectedId == MicrolabB.getId()) 
      Log.d("RB Selected","1"); 
     if(selectedId ==ISAB.getId()) 
      Log.d("RB Selected","2"); 
     if(selectedId ==MoodleB.getId()) 
      Log.d("RB Selected","3"); 

     //Intent intent = new Intent(Start.this,ApduNFC.class); 
     //startActivity(intent); 
    } 

} 
+0

Пробовал это, но он все еще перескакивает по умолчанию. В этом случае кнопка «ISAB», даже если я выбрал другую. – GhostofRazgriz

+0

попытайтесь удалить эту строку в вашем xml 'android: checked =" true "' из ISAB radiobutton – Context

+0

Теперь он не входит ни в один из них. Он перескакивает через все их шаг за шагом. Мой идентификатор кажется равным -1. – GhostofRazgriz

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