Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中设置单选按钮的值?_Java_Android_Android Radiogroup_Android Radiobutton - Fatal编程技术网

Java 如何在android中设置单选按钮的值?

Java 如何在android中设置单选按钮的值?,java,android,android-radiogroup,android-radiobutton,Java,Android,Android Radiogroup,Android Radiobutton,我从DB获取值,并将其设置为以下格式的相应按钮。是否有任何优化的方法可以做到这一点。所有这些单选按钮都位于一个单选组内 if (bundlevalue.get(3).equalsIgnoreCase("Mr.")) { rg_nametitle.check(R.id.mr); } else if (bundlevalue.get(3).equalsIgnoreCase("Mrs.")) { rg_nametitle.check(R.id.mrs); } else if (bundlevalue

我从DB获取值,并将其设置为以下格式的相应按钮。是否有任何优化的方法可以做到这一点。所有这些单选按钮都位于一个单选组内

if (bundlevalue.get(3).equalsIgnoreCase("Mr.")) {
 rg_nametitle.check(R.id.mr);
} else if (bundlevalue.get(3).equalsIgnoreCase("Mrs.")) {
rg_nametitle.check(R.id.mrs);
} else if (bundlevalue.get(3).equalsIgnoreCase("Ms.")) {
rg_nametitle.check(R.id.ms);
} else {
rg_nametitle.check(R.id.messrs);
}

如果您像这样使用
XML
属性:

<RadioGroup
...
...
android:checkedButton="@+id/IdOfTheRadioButtonInsideThatTobeChecked"
... >....</RadioGroup>
public void onRadioButtonClicked(View view) {
    // Is the button now checked?
    boolean checked = ((RadioButton) view).isChecked();

    // Check which radio button was clicked
    switch(view.getId()) {
        case R.id.radio_pirates:
            if (checked)
                // Pirates are the best
            break;
        case R.id.radio_ninjas:
            if (checked)
                // Ninjas rule
            break;
    }
}

使用
开关
语句。尽管使用
if-else
switch
没有什么大的区别,但您可以选择更容易阅读的选项

public enum Title
 {
     Mr, Mrs, Ms;
 }

String title = bundlevalue.get(3).equalsIgnoreCase("Mr.");

switch(Title.valueOf(title)) {
    case Mr:
        rg_nametitle.check(R.id.mr);
        break;
    case Ms:
        rg_nametitle.check(R.id.ms);
        break;
    case Mrs:
        rg_nametitle.check(R.id.mrs);
        break;
    default:
        break;
}

你可以尝试如下

String value = bundlevalue.get(3)
Resources res = getResources();

if (value.equalsIgnoreCase("Mr.") || value.equalsIgnoreCase("Mrs.") || value.equalsIgnoreCase("Ms.")) {

    String[] splitedValue = value.toLowerCase ().split(".");
    int id = res.getIdentifier(splitedValue[0], "id", getContext().getPackageName());
    rg_nametitle.check(id);

} else {

    rg_nametitle.check(R.id.messrs);

}

如果您使用的是java 1.7,则可以将
switch case
语句与string case一起使用。我收到此错误。类型资源中的方法getIdentifier(string,string,string)不适用于参数(string[],string,string)。我已更新了答案。很抱歉给您带来不便。