我制作了一个简单的Android应用程序,现在我想添加选择语言的功能。
现在,应用程序根据设备的语言选择文件string.xml(包含在值-it-or-values -fr中)。但现在我希望您可以选择语言而不管设备的语言。
我在选项菜单中创建了项目,但我不知道要与语言case
关联的操作。
代码如下:
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.about:
onCreateDialog(ABOUT_DIALOG_ID);
break;
case R.id.language:
// ...
break;
case R.id.exit:
this.finish();
break;
}
return true;
}
我在网上搜索但几乎找不到任何东西..我希望我没有做过一个愚蠢的问题。 谢谢!
(对不起我的英语很差)
答案 0 :(得分:0)
感谢您的回复。我是这样做的,但语言不会改变..
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.language:
onCreateDialogLanguage(LANGUAGE_DIALOG_ID);
break;
case R.id.about:
onCreateDialogAbout(ABOUT_DIALOG_ID);
break;
case R.id.exit:
this.finish();
break;
}
return true;
}
protected Dialog onCreateDialogLanguage(int id) {
AlertDialog languageDialog;
switch(id) {
case LANGUAGE_DIALOG_ID:
final CharSequence[] items = {"English", "Italian"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select language");
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
switch(item) {
case 0:
//english
Configuration en = new Configuration(getResources().getConfiguration());
en.locale = Locale.ENGLISH;
getResources().updateConfiguration(en, getResources().getDisplayMetrics());
break;
case 1:
//italian
Configuration it = new Configuration(getResources().getConfiguration());
it.locale = Locale.ITALIAN;
getResources().updateConfiguration(it, getResources().getDisplayMetrics());
break;
}
}
});
languageDialog = builder.create();
languageDialog.show();
break;
default:
languageDialog = null;
}
return languageDialog;
}