在java android中点击按钮语言改变
我正在寻找一种方法来实现按钮onclick触发的语言更改。 我在适当的文件夹中创建了正确的strings.xml(例如res / values-en /)这是我的按钮代码:
Button setEN_bt = (Button) findViewById(R.id.setEN); setEN_bt.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Locale locale_en = new Locale("en"); Locale.setDefault(locale_en); Configuration config_en = new Configuration(); config_en.locale = locale_en; getBaseContext().getResources().updateConfiguration(config_en, getBaseContext().getResources().getDisplayMetrics()); } });
所以基本上我用onclick更改了语言环境,但之后页面没有刷新(为什么要… :))。 有人可以告诉我如何刷新/重新加载活动吗?
Thanx提前帮助。
你可以尝试打电话
view.invalidate();
在您想要重绘自己的视图上。
我不确定,如果这会重新加载Locales。 如果没有,您可以通过为自己创建一个新的Intent来重新启动Activity:
Intent intent = new Intent(this, Activity.class); startActivity(intent);
干杯
您可以使用启动活动
startActivity(new Intent(CurrentActivity.this,CurrentActivity.class)); 完(); 并在onclick方法的最后使用finish()方法完成上一个活动。
您可以调用:而不是调用startActivity()然后调用finish()。
recreate(); // which is available from API Level 11.
我在这里找到了这个答案,它有另一个很好的方法来实现较低的API级别: 如何重新启动Android活动
第一种方法
String languageToLoad = "en"; Locale locale = new Locale(languageToLoad); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; context.getResources().updateConfiguration(config,context.getResources().getDisplayMetrics()); Intent intent = new Intent(XYZ.this, XYZ.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//it will recreate it self with new language. startActivity(intent);
更改区域设置后需要重新启动Activity。
第二种方法
mLocale = new Locale("en"); Locale.setDefault(mLocale); Configuration config = new Configuration(); config.locale = mLocale; getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); MainActivity.this.setContentView(R.layout.activity_main);//reset layout
但它适用于api>=11