私は、選択した言語のリソースを読み込むようにアプリケーションのロケールを変更するアクティビティを作成し、アプリケーションを再起動します。さらに、アプリケーションとして整数値を保持しています状態をsharedpreferencesを使用して、次のコードを介してロケールを設定した後、次回にアプリケーションを開くときに正しい値を持たない!!!!しかし、言語設定を削除すると問題はありません。アプリケーションの状態!Androidアプリケーションのロケール設定後にSharedPrefsがリセットされる
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
/*
* Intent refresh = new Intent(this, AndroidLocalizeActivity.class);
* startActivity(refresh); finish();
*/
PrefManager _p = new PrefManager(getApplicationContext(), PrefConfigNames.LANGUAGE_APP_CONFIG);
_p.setStringValue(GeneralPrefKeyNames.LANGUAGE, lang);
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
setResult(RESULT_OK, null);
finish();
私はsharedpreferencesに何が起こるか取得することはできません(このアプリでは私が使用したオープンソースのsecurepreferences(CodeProject article))ここ
!事前に
おかげ
編集#1 PrefManager.java
public class PrefManager {
private SecurePreferences _securePreferences = null;
public PrefManager(Context context, String PrefName)
{
_securePreferences = new SecurePreferences(context, PrefName);
}
public void setStringValue(String key, String value)
{
_securePreferences.edit().putString(key, value).commit();
}
}
編集#2 とても奇妙である何かがアプリケーションの状態が保存されていることですsharedprefsの正しい値を持っているかどうかは、Eclipseからアプリケーションをデバッグまたは実行する(デバッグするか、アンドロイドとして実行するかpplication)!!!しかし、電話でそれを再実行すると、デフォルト値になります!!!この問題を解決するのを手伝ってください!
編集#3 私は、次の行を使用してアプリケーションをリニューアルに問題があったことが判明何の問題もなくアプリを再起動する別の方法???それとも、より良い方法(がありますアプリを再起動せずに言語を更新する)?
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
は私が事前に
res.updateConfiguration(conf, dm);
感謝を二述べたアプローチ
Changing locale: Force activity to reload resources?
を達成するには次のリンクを試してみたが、それは次の行の後に提起されていません
あなたがコミットしていないように見えます。 –
私は "コミットします"、編集を確認してください。 –
@JibяanKhan:編集を確認してください... –