1

ApplicationオブジェクトのonCreateメソッドに、ApplicationContextの構成のデフォルトのローカルを変更するコードが少しあります。

次のようになります。

Locale locale = new Locale(sSavedLocale);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getResources().updateConfiguration(config, getResources().getDisplayMetrics());

私たちが主な活動を開始し、そこから他の活動やタスクを開始するよりも。画面の回転などの構成変更を引き起こさない限り、すべて問題ありません。画面を回転させると、アプリケーションオブジェクトは同じままですが、ロケールはデバイスのデフォルトに戻ります。

ActivityThreadおよびその他の内部クラスのAndroidSrouceコードを掘り下げると、ApplicationContext自体が表示され、構成変更イベントでmainThreadのコンテキストがデフォルトに戻されます。

iiはアプリの起動時にアプリケーションレベルで構成を設定するので、私にはバグのように思えます。ローカル構成の変更が発生しない限り、おそらく変更を維持したいと思います。

未解決のバグをチェックしませんでした。適用することを考えています。誰かが私が間違っていると思います、そしてこれは大丈夫な行動ですか?

4

1 に答える 1

5

クラスに追加できonConfigurationChangedます。Application

    @Override
    public void onConfigurationChanged(Configuration newConfig)
    {
        super.onConfigurationChanged(newConfig);
        if (newConfig.locale != null)
        {
            Locale locale = new Locale(sSavedLocale);
            Locale.setDefault(locale);
            Configuration config = new Configuration();
            config.locale = locale;
            getResources().updateConfiguration(config, getResources().getDisplayMetrics());
        }
    }
于 2012-12-23T09:52:14.077 に答える