私の電話機を回転させてロケールを保持したいと思います。私はフォルダの値、値 - enと値 - 時間を持っています。すべての活動では、私はアプリケーションで強制的に「ロケール」
android:configChanges="keyboardHidden|orientation|locale"
を持っており、すべてのactivity.javaファイルに私が
private Locale locale = null;
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if (locale != null)
{
newConfig.locale = locale;
Locale.setDefault(locale);
getBaseContext().getResources().updateConfiguration(newConfig, getBaseContext().getResources().getDisplayMetrics());
}
}
を持っていると私は自分の携帯電話を回転させるまでのonCreate
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
Configuration config = getBaseContext().getResources().getConfiguration();
String lang = settings.getString("language","en");
if (! "".equals(lang) && ! config.locale.getLanguage().equals(lang))
{
locale = new Locale(lang);
Locale.setDefault(locale);
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
にそれが動作する - アプリですそれでも私のロケール(時)になることがあります...
他に何を追加する必要がありますか?
なぜそれを強制するためにアンドロイドシステムがあなたのためにそれを処理させるのとは対照的に、あなたはロケールを乱していますか? –
私はこれが重複する質問かもしれないと信じています:http://stackoverflow.com/questions/3711712/android-user-set-locale-always-get-reset-after-oncreate、私が間違っている場合は私を修正してください。 –
私の解決策を見てください:http://stackoverflow.com/a/9535374/498067。 これは非常に簡単で、アクティビティに変更を加える必要はありません。 –