对话框中的单选按钮不会自动被选中

Radio button in dialog not automically being selected

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

E.g. When my device language is set to English, I want the 'English' radio button to be selected.

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

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