Próbuję zaktualizować wartości SharedPreferences, tutaj jest mój kod:SharedPreferences nie jest aktualizowana
edit = PreferenceManager.getDefaultSharedPreferences(this).edit();
edit.putString(Settings.PREF_USERNAME+"",txtuser);
edit.putString(Settings.PREF_PASSWORD+"",txtpass);
edit.commit();"
Problem polega na tym, że kiedy mam dostępu do tej wartości, to nie wraca zaktualizowane wartości, daje mi wartość SharedPreferences.
Ale kiedy potwierdzam dane w pliku XML, dane aktualizowane w tym.
Po ponownym uruchomieniu aplikacji otrzymuję zaktualizowane wartości. Wymaga to ponownego uruchomienia aplikacji, aby uzyskać zaktualizowane wartości.
Jak uzyskać zaktualizowane wartości po zmianie?
góry dzięki
Oto cały mój kod:
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
ctx=this;
status=PreferenceManager.getDefaultSharedPreferences(this).getString(Settings.PREF_STATUS, Settings.DEFAULT_STATUS);// get old value
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
on(ctx,true);// function will call and value is updated
}
}});
status=PreferenceManager.getDefaultSharedPreferences(this).getString(Settings.PREF_STATUS, Settings.DEFAULT_STATUS);// this should give me a updated value but gives old value
}
public static boolean on(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(Settings.PREF_ON, Settings.DEFAULT_ON);
}
public static void on(Context context,boolean on) {
if (on) Receiver.engine(context).isRegistered(); //
}
**********in reciver file***********
public void isRegistered) {
Editor edit = PreferenceManager.getDefaultSharedPreferences(Receiver.mContext).edit();
edit.putString(Settings.PREF_STATUS+"","0");
edit.commit();
}
pokaż kod uzyskania wartości. –
Czy możesz pokazać inny kod, który podaje prawidłowe wartości. A skąd aktualizujesz wartości? Jeśli otrzymujesz wartości przed aktualizacją preferencji współdzielonych, na pewno podasz stare wartości. –