Ho creato un'attività per modificare le impostazioni locali dell'applicazione per caricare le risorse della lingua selezionata e riavvio l'applicazione, inoltre sto mantenendo un valore intero come l'app stato utilizzando sharedpreferences, dopo aver impostato la locale tramite il seguente codice, la prossima volta che apro l'applicazione lo stato menzionato non ha il valore corretto !!!! Ma, quando rimuovo l'impostazione della lingua non c'è alcun problema con il stato dell'applicazione!SharedPrefs viene ripristinato dopo l'impostazione della locale dell'applicazione Android
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();
non riesco a ottenere ciò che accade a sharedpreferences (ho usato securepreferences open source (CodeProject article) in questa applicazione)
qui !!!
Grazie in anticipo
Modifica # 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();
}
}
Modifica # 2 Qualcosa che è così strano è che lo stato dell'applicazione memorizzata in sharedprefs ha il valore corretto quando eseguo il debug o eseguo l'applicazione da eclipse (esegui il debug o esegui come un pplication) !!! ma quando lo eseguo di nuovo sul telefono ha il valore predefinito !!! Per favore aiutami a risolvere questo problema!
Modifica # 3 ho scoperto che c'era un problema con il rilancio l'applicazione utilizzando le seguenti linee, c'è un altro modo per rilanciare l'applicazione senza alcun problema ??? O anche un modo migliore (aggiornare la lingua senza riavviare l'app)?
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage(getBaseContext().getPackageName());
i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i);
ho provato il seguente Link per ottenere il secondo approccio citato
Changing locale: Force activity to reload resources?
, ma non viene sollevata dopo la seguente riga
res.updateConfiguration(conf, dm);
Grazie in anticipo
Sembra che tu non sta eseguendo il commit() –
io "commit()", Controllare la modifica per favore. –
@ Jibяan Khan: controllare la modifica per favore ... –