对话框中的单选按钮未自动选择

时间:2015-09-16 13:37:09

标签: java android radio-button alertdialog android-alertdialog

在我的警告对话框中,我正在尝试根据设备设置的语言突出显示特定的单选按钮,但我不确定要添加哪些代码才能实现此目的。问题是我认为必须采用的解决方案。需要做些什么来解决这个问题?

  

E.g。当我的设备语言设置为英语时,我希望选择“英语”单选按钮。

public class MainActivity extends AppCompatActivity {

    AlertDialog languageDialog;
    Context context = this;
    int i;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Button button0 = (Button) findViewById(R.id.button0);
        button1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                if (Locale.getDefault().equals(Locale.ENGLISH)) {
                    ?
                }

                final CharSequence[] items = {
                        getResources().getString(R.string.english),
                        getResources().getString(R.string.french),
                        getResources().getString(R.string.japanese)
                };

                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle(R.string.language);

                builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int item) {
                        i = item;
                    }
                });

                languageDialog = builder.create();
                languageDialog.show();
            }
        });
    }
}

enter image description here

1 个答案:

答案 0 :(得分:1)

setSingleChoiceItems中的第二个参数是您设置所选项目的位置。所以,让我们找出与设备的当前语言相对应的items索引。

int defaultLang = -1;
for(int i = 0; i < items.length; i++) {
    if(items[i].toString().equalsIgnoreCase(Locale.getDefault().getDisplayLanguage())) {
        defaultLang = i;
        break;
    }
}

然后,只需使用此索引设置对话框的项目

builder.setSingleChoiceItems(items, defaultLang, new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int item) {
        i = item;
    }
});