我有三个单选按钮来指定性别,男性女性和其他。我根据用户选择将此数据保存到我的数据库中,男性为1,女性为2,其他为3。这反映在配置文件页面中,现在当我想编辑配置文件时,我想以可编辑的方式自动填充我的配置文件页面的所有字段,用户只更改他想要的字段。虽然我能够从我的数据库中获取性别1,2,3的值,但我无法将指定的单选按钮填充为已选中。我尝试了以下方法:
String M = (c.getString(c.getColumnIndexOrThrow("Gender")));
RadioGroup rb1 = (RadioGroup)findViewById(R.id.radiogroup1);
if(M.equals(1)){
rb1.check(R.id.radiobutton3);
RadioButton rbu1 =(RadioButton)findViewById(R.id.radiobutton3);
rbu1.setChecked(true);
}
else if(M.equals(2)){
rb1.check(R.id.radiobutton4);
RadioButton rbu2 =(RadioButton)findViewById(R.id.radiobutton4);
rbu2.setChecked(true);
}
else if(M.equals(3)){
rb1.check(R.id.radiobutton5);
RadioButton rbu3 =(RadioButton)findViewById(R.id.radiobutton5);
rbu3.setChecked(true);
}
答案 0 :(得分:12)
您可以使用radioButton.setChecked(true)
;或radiobutton.setSelected(true)
;
不要给rb1,在你的代码中,rb1指的是RadioGroup,为单选按钮设置名称。
String M = "3";
RadioGroup rb1 = (RadioGroup)findViewById(R.id.radioGroup1);
RadioButton rbu1 =(RadioButton)findViewById(R.id.radio0);
RadioButton rbu2 =(RadioButton)findViewById(R.id.radio1);
RadioButton rbu3 =(RadioButton)findViewById(R.id.radio2);
if(M.equalsIgnoreCase("1"))
{
rbu1.setChecked(true);
}
else if(M.equalsIgnoreCase("2")){
rbu2.setChecked(true);
}
else if(M.equalsIgnoreCase("3"))
{
rbu3.setChecked(true);
}
答案 1 :(得分:2)
这是设置检查。
radioButton.setChecked(true);
这是为了获取已检查的radiobutton的值
RadioGroup rg=(RadioGroup) findViewById(R.id.radioGroup1);
rg.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup arg0, int id)
{
RadioButton checkedRadioButton = (RadioButton)rg.findViewById(id);
boolean isChecked = checkedRadioButton.isChecked();
if (isChecked)
{
Toast.makeText(getApplicationContext(),
checkedRadioButton.getText(),Toast.LENGTH_LONG).show();
}
}});
答案 2 :(得分:1)
试试这段代码:
radioButton.setChecked(true);
radioSexGroup = (RadioGroup) findViewById(R.id.radioSex);
int selectedId = radioSexGroup.getCheckedRadioButtonId();
rb = (RadioButton) findViewById(selectedId);
sex = rb.getText().toString().trim();