Android:以编程方式更改语言 [英] Android: Change language programmatically
问题描述
我有 3 个按钮可以更改语言.所以我需要制作方法,在那里我可以将侦听器设置为每次按下时都可以更改语言的按钮.我试过这个 https://stackoverflow.com/a/2900144/1088229 但这样它只改变了一次语言环境,似乎这不再起作用(如果我再次单击,它甚至没有响应).所以我在监听器的末尾添加了 changeLanguageListener()
,所以监听器被刷新了.
I have 3 buttons to change language. So I need to make method, where I could set listeners to buttons which could change language everytime they are pressed.
I tried this https://stackoverflow.com/a/2900144/1088229 but this way it changes locale only once and seems that this doesn't work any more (if i click again, it doesn't even respond). So I added changeLanguageListener()
in end of listener, so listener is refreshed.
那可以吗,我是怎么解决的,还是有其他方法?
So is it ok, how i solved it or there is another way?
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,所以一切都被刷新了.没有找到其他更好的解决方案
So, because of only two activities (two menu modes) where i let to change locale, I just restart Activity right after locale change, so everything is refreshed. Didn't find any other better solution
这篇关于Android:以编程方式更改语言的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!