【发布时间】:2012-04-28 11:55:04
【问题描述】:
我正在尝试更新 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();
}
【问题讨论】:
-
显示获取值的代码。
-
您能否展示其他给出正确值的代码。从哪里更新值?如果您在更新共享首选项之前获取值,它肯定会给出旧值。
标签: android xml sharedpreferences