如何从单选组中获取默认选择的单选按钮?
How to get default selected radio button from radio group?
我有一个由三个单选按钮组成的单选组 'yes'
、'no'
、'do not know'
。我将 android:checkedButton="@id/r3"
设置为默认 select 到第三个单选按钮。我已经为单选组设置了 setOnCheckedChangeListener
,它会在 selecting 来自 UI 的任何单选按钮上被调用。
我想在 onCreate
中为默认的 selected 单选按钮调用监听器,因为我在默认 selected 的代码中设置了一些值。
是否有可能在 onCreate
的单选组中获取默认的 selected 单选按钮并执行一些操作,稍后 setOnCheckedChangeListener
将处理 selected来自 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;
}
}
替换为:
android:checkedButton="@+id/r3"
而不是:
android:checkedButton="@id/r3"
你也可以使用这个:
radiogroup.check(radioButtonId)
布尔属性 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
您希望默认显示的选项。
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();
}
您可以通过ID获取默认选中的按钮。 RadioGroup支持returns默认选中单选按钮的按钮id的方法。
在你的情况下,代码就像
rg1.getCheckedRadioButtonId()
请查看 android 文档以了解方法。
单选组支持查找选中的单选按钮id,这里你的单选按钮是mRadioAns3,你可以通过以下方式获取选中的单选按钮id,
int selectedRadioBtnID = mRadioAns3.getCheckedRadioButtonId ();
通过使用此 ID,您可以获得选定的单选按钮,
RadioButton radioBtn = mRadioAns3.findViewByID(selectedRadioBtnID);
通过这个单选按钮,您可以在 loding 处显示 toast 消息,
Toast.makeText(context, radioBtn.getText(),Toast.LENGTH_LONG ).show();
希望对您有所帮助。
我有一个由三个单选按钮组成的单选组 'yes'
、'no'
、'do not know'
。我将 android:checkedButton="@id/r3"
设置为默认 select 到第三个单选按钮。我已经为单选组设置了 setOnCheckedChangeListener
,它会在 selecting 来自 UI 的任何单选按钮上被调用。
我想在 onCreate
中为默认的 selected 单选按钮调用监听器,因为我在默认 selected 的代码中设置了一些值。
是否有可能在 onCreate
的单选组中获取默认的 selected 单选按钮并执行一些操作,稍后 setOnCheckedChangeListener
将处理 selected来自 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;
}
}
替换为:
android:checkedButton="@+id/r3"
而不是:
android:checkedButton="@id/r3"
你也可以使用这个:
radiogroup.check(radioButtonId)
布尔属性 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
您希望默认显示的选项。
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();
}
您可以通过ID获取默认选中的按钮。 RadioGroup支持returns默认选中单选按钮的按钮id的方法。
在你的情况下,代码就像
rg1.getCheckedRadioButtonId()
请查看 android 文档以了解方法。
单选组支持查找选中的单选按钮id,这里你的单选按钮是mRadioAns3,你可以通过以下方式获取选中的单选按钮id,
int selectedRadioBtnID = mRadioAns3.getCheckedRadioButtonId ();
通过使用此 ID,您可以获得选定的单选按钮,
RadioButton radioBtn = mRadioAns3.findViewByID(selectedRadioBtnID);
通过这个单选按钮,您可以在 loding 处显示 toast 消息,
Toast.makeText(context, radioBtn.getText(),Toast.LENGTH_LONG ).show();
希望对您有所帮助。