共享偏好处理

时间:2012-02-28 07:04:43

标签: android storage sharedpreferences

我在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","");
    }

3 个答案:

答案 0 :(得分:6)

查看此博客,它可能会对您有所帮助。

http://saigeethamn.blogspot.in/2009/10/shared-preferences-android-developer.html

答案 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();

现在你必须在任何需要的地方直接使用这个编辑器。