0

我在选项更改后强制使用语言环境:

public void forceLocale(Context ctx) {
    Locale.setDefault(getCurrentLocale());
    Configuration config = new Configuration();
    config.locale = getCurrentLocale();
    ctx.getResources().updateConfiguration(config, ctx.getResources().getDisplayMetrics());   
}

我希望在新的语言环境中显示当前活动,但它没有发生。其他活动也一样。

我尝试在我的所有活动的 onResume() 上无效:

protected void onResume() {
    //if no custom locale, restore default
    if (StaticClass.locale.getCurrentLocale() == null)
        StaticClass.locale.restoreDefaultLocale();

    //force curretnt locale
    StaticClass.locale.forceLocale(this);

    //reload the view
    ViewGroup vg = (ViewGroup) findViewById(android.R.id.content);
    vg.invalidate();

    super.onResume();
}

没有效果。该应用程序在从内存中清除并重新启动后被翻译

4

1 回答 1

0

您是否在清单中设置了语言环境属性android:configChanges="locale"?我还在onCreate()每个活动中添加了这个

if (Globals.langConfig != null) this.onConfigurationChanged(Globals.langConfig);

onConfigurationChanged()然后我在每个活动中覆盖

  @Override
        public void onConfigurationChanged(Configuration newConfig) {
         newConfig = Globals.getUserLanguage(this);

super.onConfigurationChanged(newConfig);

这可能不是最好的方法,但现在对我有用。如果您还没有,我认为覆盖该onConfigurationChanged()方法可能是您最大的问题

于 2012-12-07T22:56:58.427 回答