Как получить выбранную по умолчанию радио-кнопку из группы радио? - PullRequest
1 голос
/ 14 мая 2019

У меня есть радиогруппа, состоящая из трех радиокнопок 'yes', 'no', 'do not know'. Я устанавливаю android:checkedButton="@id/r3" по умолчанию, выберите третью радиокнопку. Я установил setOnCheckedChangeListener для радиогруппы, и она вызывается при выборе любой радиокнопки из пользовательского интерфейса.

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

Есть ли возможность получить выбранную по умолчанию радиокнопку в радиогруппе в onCreate и выполнить некоторые действия, позже setOnCheckedChangeListener будет обрабатывать выбранную радиокнопку из пользовательского интерфейса

<RadioGroup
                    android:id="@+id/rg1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:checkedButton="@id/r3"
                    android:orientation="horizontal"
                    android:weightSum="3">

                    <RadioButton
                        android:id="@+id/r1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="Yes"
                        android:textColor="@color/fontBlackEnable" />

                    <RadioButton
                        android:id="@+id/r2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:text="No"
                        android:textColor="@color/fontBlackEnable" />

                    <RadioButton
                        android:id="@+id/r3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:checked="true"
                        android:text="@string/do_not_know" />

                </RadioGroup>
public class MyFragment extends Fragment {

    View rootView;
    Context context;
    RadioGroup mRadioAns3;



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        rootView = inflater.inflate(R.layout.my_fragment, container, false);
        context = container.getContext();
        mRadioAns3 = rootView.findViewById(R.id.rg1);

       //Todo: get default selected radiobutton and show toast on load of fragment


        mRadioAns3.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                Toast.makeText(context,((RadioButton) rootView.findViewById(checkedId)).getText() ,Toast.LENGTH_LONG ).show();
            }
        });

        return rootView;
    }


}

Ответы [ 5 ]

1 голос
/ 14 мая 2019
if(gender.getCheckedRadioButtonId()==-1)
{
    Toast.makeText(mContext, "Please select Gender", Toast.LENGTH_SHORT).show();
}
else
{
    // get selected radio button from radioGroup
    int selectedId = gender.getCheckedRadioButtonId();
    // find the radiobutton by returned id
    selectedRadioButton = (RadioButton)findViewById(selectedId);
    Toast.makeText(mContext, selectedRadioButton.getText().toString()+" is selected", Toast.LENGTH_SHORT).show();
}
0 голосов
/ 14 мая 2019

Радиогруппа поддерживает поиск идентификатора выбранной радиокнопки. Здесь ваша радиокнопка mRadioAns3, и вы можете получить выбранный идентификатор радиокнопки,

int selectedRadioBtnID = mRadioAns3.getCheckedRadioButtonId ();

Используя этот идентификатор, вы можете получить выбранную радиокнопку,

RadioButton radioBtn = mRadioAns3.findViewByID(selectedRadioBtnID);

С помощью этого переключателя вы можете показывать тостовое сообщение при кодировании,

Toast.makeText(context, radioBtn.getText(),Toast.LENGTH_LONG ).show();

Надеюсь, это поможет вам.

0 голосов
/ 14 мая 2019

Вы можете выбрать выбранную по умолчанию кнопку по ее ID .RadioGroup поддерживает метод, который возвращает идентификатор кнопки выбранной по умолчанию радиокнопки.

В вашем случае код выглядит как

rg1.getCheckedRadioButtonId()

Пожалуйста, проверьте документацию для Android на предметmethod.

getCheckedRadioButtonId

0 голосов
/ 14 мая 2019

Логический атрибут android:checked - это свойство справки, доступное в файле макета,

Что-то вроде,

<RadioGroup
    android:id="@+id/rgGender"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <RadioButton
        android:id="@+id/rbMale"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/radio_male" 
        android:checked="true" />

    <RadioButton
        android:id="@+id/rbFemale"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/radio_female" />
</RadioGroup>

ПРИМЕЧАНИЕ. Присвойте этому атрибуту значение RadioButton, которое вы хотите показать выбранным по умолчанию.

0 голосов
/ 14 мая 2019

Замените это:

android:checkedButton="@+id/r3"

Вместо:

android:checkedButton="@id/r3"

И вы также можете использовать это:

radiogroup.check(radioButtonId)
...