2011-01-14 20 views
1

私の電話機を回転させてロケールを保持したいと思います。私はフォルダの値、値 - 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()); 
    } 

にそれが動作する - アプリですそれでも私のロケール(時)になることがあります...

他に何を追加する必要がありますか?

+0

なぜそれを強制するためにアンドロイドシステムがあなたのためにそれを処理させるのとは対照的に、あなたはロケールを乱していますか? –

+1

私はこれが重複する質問かもしれないと信じています:http://stackoverflow.com/questions/3711712/android-user-set-locale-always-get-reset-after-oncreate、私が間違っている場合は私を修正してください。 –

+0

私の解決策を見てください:http://stackoverflow.com/a/9535374/498067。 これは非常に簡単で、アクティビティに変更を加える必要はありません。 –

答えて

1

私は単に "あれば"を削除して、今はすべて動作しています。はい、ロケールを「再強制」するたびに「かさばる」少しですが、別の方法を見つけることはできませんでした。

私の解決策はちょっと違うので、onCreateとonConfigChangeを "再実行"してください.100msくらいごとではなく、Desire(2.2)では完璧に動作しています。

@Austyn

はい、それはかなり同じ質問ですが、私はしかし、「強制的に100msの」除くが、別のソリューションです。

@Mayra

ユーザーたくは彼らの母国語(HR)を持っているが、それはそう、これが唯一の方法である(現在)の携帯電話でサポートされていないだ -/=

関連する問題