我試圖更新的SharedPreferences值,這裏是我的代碼:SharedPreferences值不更新
edit = PreferenceManager.getDefaultSharedPreferences(this).edit();
edit.putString(Settings.PREF_USERNAME+"",txtuser);
edit.putString(Settings.PREF_PASSWORD+"",txtpass);
edit.commit();"
的問題是,當我訪問這個值,它沒有返回更新後的值,它給了我一個SharedPreferences的價值。
但是,當我確認XML文件中的數據時,數據更新了。
重新啓動我的應用程序後,我得到了更新的值。所以它需要我重新啓動應用程序才能獲取更新的值。
那麼,一旦它發生變化,如何獲取這些更新值?
在此先感謝
這裏是我的全部代碼:
@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();
}
顯示獲取值的代碼。 – 2012-04-17 06:31:36
你能顯示其他代碼給出正確的值嗎?從哪裏更新值?如果您在更新共享偏好設置之前獲取值,它肯定會給出舊值。 – 2012-04-17 06:35:40