我在android中制作了共享首选项的程序代码。但我对共享偏好感到困惑。我正在更新共享首选项,如果它与之前的不一样,但每当我检索其值时获得相同的值。还请让我知道如何删除onDestroy()上的sharedpreference。
Bundle bundle = this.getIntent().getExtras();
resid=bundle.getString("locid");
SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(this);
String prefresid = app_preferences.getString("preflocid", null);
Log.i("pref res id is",""+prefresid);
if(prefresid!=null)
{
if(resid.equalsIgnoreCase(prefresid))
{
Log.i("preference res id is the same","");
}
else
{
SharedPreferences.Editor e = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();
Log.i("preference res id is not same","creating new");
//SharedPreferences settings = getSharedPreferences("myfile", 0);
// SharedPreferences.Editor editor = settings.edit();
e.putString("preflocid",resid);
e.commit();
}
}
else
{
Log.i("new preference res id created",""+prefresid);
SharedPreferences.Editor editor = app_preferences.edit();
editor.putString("preflocid", resid);
editor.commit();
Log.i("new preference res id created","");
}
答案 0 :(得分:6)
答案 1 :(得分:1)
您在代码中执行的操作只会更改首选项的值,即第一次读取它时。第一次它为null,这意味着你进入else并将“locid”保存为“preflocid”。下一次“locid”设置为,你将进入if然后进入第一个if因为“locid”.equalsIgnoreCase(prefresid)。
要删除onDestroy中的首选项,只需调用:
@Override
protected void onDestroy() {
SharedPreferences.Editor e = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit();
e.clear();
e.commit();
}
答案 2 :(得分:0)
只有一个默认的SharedPreference对象,并且具有以下编辑器:
SharedPreferences s_pref= PreferenceManager.getDefaultSharedPreferences(context);
Editor edit=s_pref.edit();
现在你必须在任何需要的地方直接使用这个编辑器。