如何从单选组获取默认选中的单选按钮?

时间:2019-05-14 04:56:04

标签: android radio-button radio-group

我有一个由三个单选按钮'yes''no''do not know'组成的单选组。我将android:checkedButton="@id/r3"设置为默认选择第三个单选按钮。我已经为单选组设置了setOnCheckedChangeListener,并且在从UI中选择任何单选按钮时都会调用它。

我想在onCreate中为默认选中的单选按钮调用侦听器,因为我正在对默认选中的代码执行一些设置。

是否有可能在onCreate的单选组中获取默认的选定单选按钮并执行某些操作,稍后setOnCheckedChangeListener将通过UI处理选定的单选按钮

<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 个答案:

答案 0 :(得分:1)

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();
}

答案 1 :(得分:0)

替换此:

Text(
    'xyz',
    textDirection: TextDirection.ltr, 
)

代替:

android:checkedButton="@+id/r3"

您还可以使用此:

android:checkedButton="@id/r3"

答案 2 :(得分:0)

布尔属性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

答案 3 :(得分:0)

您可以通过其 ID 获得默认的选定按钮。 RadioGroup支持返回默认选定单选按钮的按钮ID 的方法。

在您的情况下,代码类似于

rg1.getCheckedRadioButtonId()

请检查android文档中的方法。

getCheckedRadioButtonId

答案 4 :(得分:0)

单选按钮组支持查找选定的单选按钮ID,这里您的单选按钮为mRadioAns3,您可以通过以下方式获取选定的单选按钮ID,

int selectedRadioBtnID = mRadioAns3.getCheckedRadioButtonId ();

通过使用此ID,您可以选择单选按钮,

RadioButton radioBtn = mRadioAns3.findViewByID(selectedRadioBtnID);

通过此单选按钮,您可以在展示时显示吐司消息,

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

希望它会对您有所帮助。