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

マニフェストに locale 属性が設定されています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 に答える