5

我想更改我的 android 应用程序中的语言环境,所以我使用了以下代码:

Locale locale = new Locale('fr'); // or whatever
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;

getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());

但问题是我的观点没有任何改变。我应该如何重新加载它们以使语言环境更改可见?

编辑:每个视图都会受到影响:按钮、文本视图、复选框。当然,如果我手动设置视图的文本,那么它可以工作,但我不想在每个小部件上调用 setText() ......我知道是因为用户名显示在视图中并且在注销后它没有更新/ 用另一个用户登录。所以我手动更新了文本视图,但是在我发现更改语言环境时每个视图的问题都是相同的。

4

2 回答 2

0

我猜您是在问如何Activity在更改语言环境时“重新加载”您所在的位置。

据我所知,您必须重新布局/重新创建Views 或重新设置其中的文本。但是,如果您找到更好的解决方案,请分享。

于 2012-05-02T14:01:55.810 回答
0

好吧,我找到了解决方案,并想分享。
将此添加到您的清单中

android:configChanges="locale"

并在您的活动中覆盖 onConfigurationChanged()

@Override
public void onConfigurationChanged(Configuration newConfig) {
  // refresh your views here
  super.onConfigurationChanged(newConfig);
}

这里了解更多信息。希望能帮助到你。:)

于 2014-02-01T04:26:33.683 回答