Android RadioGroup getCheckedRadioButtonId()

Я пытаюсь проверить, проверена ли хотя бы радиокнопка внутри радиогруппы. Очевидно, что я могу выбрать проверку каждого из них за раз, но, согласно справочному сайту разработчиков Android, public int getCheckedRadioButtonId() является общедоступным методом радиогруппы, который возвращает -1 при пустых выборах. так это мои коды

if(radioGroup.getCheckedRadioButtonId() == -1){
        Toast.makeText(getApplicationContext(),"Please make a selection",Toast.LENGTH_SHORT);
        return;
    }
 <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/radioGroup"
        android:layout_below="@id/loanPurposeTV">

        <RadioButton
            android:id="@+id/radioButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:text="Personal"
            android:checked="false" />

        <RadioButton
            android:id="@+id/radioButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toEndOf="@+id/radioButton"
            android:layout_toRightOf="@+id/radioButton"
            android:text="Bussiness" />

        <RadioButton
            android:id="@+id/radioButton3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/radioButton2"
            android:layout_toEndOf="@+id/radioButton2"
            android:layout_toRightOf="@+id/radioButton2"
            android:text="Option Three" />

        <RadioButton
            android:id="@+id/radioButton4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toEndOf="@+id/radioButton3"
            android:layout_toRightOf="@+id/radioButton3"
            android:text="Option Four" />

        <RadioButton
            android:id="@+id/radioButton5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_toEndOf="@+id/radioButton4"
            android:layout_toRightOf="@+id/radioButton4"
            android:text="Other" />
    </RadioGroup>

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


person KBJ    schedule 21.10.2015    source источник
comment
Что конкретно не работает? Всегда ли -1?   -  person ElliotM    schedule 21.10.2015
comment
Но это не работает должным образом - пожалуйста, объясните ваши точные симптомы. Также покажите, как вы настраиваете RadioButtons и RadioGroup.   -  person CommonsWare    schedule 21.10.2015
comment
@ElliotM, если я не выберу ни одну из радиокнопок в группе радио, всплывающее уведомление должно показывать это сообщение, которое не работает.   -  person KBJ    schedule 21.10.2015
comment
Нам нужно будет увидеть код, в котором вы настроили радиогруппу.   -  person ElliotM    schedule 21.10.2015
comment
@ElliotM я только что обновил свой вопрос с кодами xml   -  person KBJ    schedule 21.10.2015


Ответы (1)


Во-первых, вы забыли ".show()" при вызове Toast.

Лично я столкнулся с той же проблемой (она всегда возвращала -1, даже когда выбран переключатель), несмотря на то, что есть ответы, доказывающие, что это работает, как этот

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

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

Или вы можете создать логическую переменную, инициализированную значением false, которая будет установлена ​​в значение true, как только будет выбрана какая-либо радиокнопка (используйте OnCheckChangeListener).

person PAD    schedule 21.10.2015
comment
иногда ты просто слишком много думаешь, что в конечном итоге упускаешь очень маленькие вещи, спасибо, чувак. не понял, что я не показывал тост. - person KBJ; 21.10.2015
comment
Я понимаю @KBJ, это даже к лучшему случается :) - person PAD; 21.10.2015
comment
при использовании onCheckChangeListener вы можете получить строку переключателя с их идентификаторами? или я должен сделать это трудным путем. - person KBJ; 21.10.2015