Получить выбранный идентификатор переключателя, помещенный в представление навигации

Я взял радиогруппу в навигационном представлении макета ящика, как это

 <android.support.design.widget.NavigationView
     app:headerLayout="@layout/header"
     app:menu="@menu/drawer">

 <RadioGroup>
      <RadioButton/>
      <RadioButton/>
 </RadioGroup>

     </android.support.design.widget.NavigationView>

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

Код для получения выбранной радиокнопки:

rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
         @Override
         public void onCheckedChanged(RadioGroup group, int checkedId) {
            int pos=rg.indexOfChild(findViewById(checkedId));
             Toast.makeText(MainActivity.this, "ID = "+String.valueOf(pos),
                     Toast.LENGTH_SHORT).show();
             Log.e("",""+pos);
         } 

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


person Bee    schedule 22.03.2016    source источник
comment
установите тег для переключателя, затем получите тег в приведенном выше коде в соответствии с позицией, что означает radiobutton1.setTag(1) и radioButton2.setTag(2) в rg. setOnCheckedChangeListener просто поместите условие if (radiobutton1.getTag==1){// выполните действия} else {//выполните другие действия};   -  person Amit Ranjan    schedule 22.03.2016


Ответы (2)


Пример — точно так же, как в файле developer.android

Вам просто нужно добавить атрибут onClick в XML-файл, как показано ниже

<?xml version="1.0" encoding="utf-8"?>
<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <RadioButton android:id="@+id/radio_pirates"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/pirates"
        android:onClick="onRadioButtonClicked"/>
    <RadioButton android:id="@+id/radio_ninjas"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/ninjas"
        android:onClick="onRadioButtonClicked"/>
</RadioGroup>

Обработка события onClick в части кода

 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.radio_pirates:
            if (checked)
                // Pirates are the best
            break;
        case R.id.radio_ninjas:
            if (checked)
                // Ninjas rule
            break;
    }
}
person Alex Chengalan    schedule 22.03.2016
comment
Но если я пишу журнал или тост в части if(checked), я ничего не получаю.. - person Bee; 22.03.2016

Извините, не смог ответить в комментарии. Попробуй это:

navigationView.getMenu().findItem(R.id.radioButtonId);

это вернет идентификатор вашего RadioButton.

Редактировать:

Можете ли вы сделать что-то вроде этого:

RadioButton radio = (RadioButton)navigationView.findViewById(R.id.radioButtonId);
person Lokesh Jain    schedule 22.03.2016
comment
Можете ли вы сделать что-то вроде этого: RadioButton radio = (RadioButton)navigationView.findViewById(R.id.radioButtonId); - person Lokesh Jain; 22.03.2016