Я создаю действие для изменения локали приложения для загрузки ресурсов выбранного языка, и я перезапускаю приложение, более того, я сохраняю целочисленное значение как состояние приложения, используя sharedpreferences, после установки локали через следующий код, в следующий раз, когда я открою приложение, указанное состояние не имеет правильного значения!!!! Но, когда я удаляю настройку языка, нет никаких проблем с состоянием приложения!
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 (я использовал безопасные ссылки с открытым исходным кодом (статья CodeProject) в этом приложении)
здесь!!!
Заранее спасибо
Edit # 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();
}
}
Edit # 2 Что-то странное в том, что состояние приложения, хранящегося в sharedprefs, имеет правильное значение, когда я отлаживаю или запускаю приложение из eclipse (отлаживается или запускается как приложение для Android)!!!, но когда я перезапускаю его по телефону, имеет значение по умолчанию!!! Пожалуйста, помогите мне решить эту проблему!
Edit # 3 Я выяснил, что возникла проблема с перезапуском приложения, используя следующие строки: есть ли другой способ перезапустить приложение без каких-либо проблем? Или даже лучший способ (обновить язык без перезапуска приложения)?
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
Я попытался использовать следующую ссылку для достижения второго упомянутого подхода
Изменение языка: принудительная активность для перезагрузки ресурсов?
но он не поднимается после следующей строки
res.updateConfiguration(conf, dm);
Заранее спасибо