在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