我有3个按钮来改变语言.所以我需要创建方法,我可以将监听器设置为按钮,这些按钮可以在每次按下时更改语言.
我尝试了这个https://*.com/a/2900144/1088229,但这样它只改变了一次语言环境,似乎这不再起作用了(如果我再次点击,它甚至没有响应).所以我在侦听器的末尾添加了changeLanguageListener(),因此刷新了侦听器.
那么没关系,我是如何解决它还是有另一种方式?
private void changeLanguageListener() {
final Button butEn = (Button) findViewById(R.id.button_language_en);
final Button butLt = (Button) findViewById(R.id.button_language_lt);
final Button butRu = (Button) findViewById(R.id.button_language_ru);
OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
Button but = (Button) v;
Resources res = getResources();
String current = res.getConfiguration().locale.getCountry();
Log.i("Current", current);
String localeString = new String(current);
if (but.equals(butEn)) {
localeString = "en";
} else if (but.equals(butLt)) {
localeString = "lt";
} else if (but.equals(butRu)) {
localeString = "ru";
}
Log.i("Clicked", localeString);
if (!current.equalsIgnoreCase(localeString) && localeString.length() > 0) {
// Change locale settings in the app.
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.locale = new Locale(localeString.toLowerCase());
res.updateConfiguration(conf, dm);
//refresh menu
setGridView();
//added this line to get refreshed listener
changeLanguageListener();
}
}
};
butEn.setOnClickListener(listener);
butLt.setOnClickListener(listener);
butRu.setOnClickListener(listener);
}
解决方法:
因此,由于只允许更改区域设置的两个活动(两个菜单模式),我只需在区域设置更改后立即重新启动Activity,因此所有内容都会刷新.没有找到任何其他更好的解决方案