我正在尝试在应用程序中选择语言。选择语言后,语言会改变,但选择不会改变。我使用两种语言,如果我选择了第一语言(印度尼西亚),但是如果我选择了第二语言(英语),则选择仍然是第一选择(印度尼西亚),并且语言变成了英语。这是我的代码。
Button changeLang = findViewById(R.id.bahasa);
changeLang.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showChangeLanguageDialog();
}
});
此代码显示对话框警报。
private void showChangeLanguageDialog() {
final String[] listItems = {"Indonesia", "English"};
AlertDialog.Builder mBuilder = new AlertDialog.Builder(AboutActivity.this);
mBuilder.setTitle("Pilih Bahasa");
Integer selectedPos = 0;
if(listItems.equals("Indonesia")){
selectedPos = 1; }
else {
selectedPos = 0;
}
mBuilder.setSingleChoiceItems(listItems, selectedPos, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String selectedItem = listItems[which];
if (selectedItem.equals("Indonesia")) {
setLocale("in");
recreate();
} else {
setLocale("en");
recreate();
}
dialog.dismiss();
}
});
AlertDialog mDialog = mBuilder.create();
mDialog.show();
}
private void setLocale(String lang) {
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
SharedPreferences.Editor editor = getSharedPreferences("Settings", MODE_PRIVATE).edit();
editor.putString("My_Lang", lang);
editor.apply();
}
public void loadLocale(){
SharedPreferences preferences = getSharedPreferences("Settings", Activity.MODE_PRIVATE);
String language = preferences.getString("My_Lang","");
setLocale(language);
}