2012-02-28 79 views
0

我已經做了一個程序代碼爲Android的共享偏好。但我對sharedpreference感到困惑。我正在更新sharedpreference,如果它與之前不一樣,但每次我檢索它的值時都會得到相同的值。另請讓我知道如何刪除onDestroy()上的sharedpreference。sharedpreference handling

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

有默認SharedPreference只是一個對象,並有編輯到像:

SharedPreferences s_pref= PreferenceManager.getDefaultSharedPreferences(context); 
Editor edit=s_pref.edit(); 

現在,你將不得不使用這個編輯器直接在需要的地方。

+0

感謝您的回覆,但所有這些都已完成。您可以在代碼中輸入c。代碼中有任何錯誤?請告訴我。 – samir 2012-02-28 07:17:19

+0

按照我對編輯器的建議採用單個對象實例。您已採用兩個不同的對象。請在全局下將其聲明爲您的s_pref。然後使用編輯器將值賦給s_pref。不要在每個地方創建對象。 – Hiral 2012-02-28 07:21:55

+0

不錯的一個。我怎麼能這樣做。無論如何感謝您的幫助,真的很感激它。它現在工作很好。:-) – samir 2012-02-28 07:26:31

1

你在你的代碼正在做什麼,只會改變首選項的值一次,即第一次讀它。第一次它是空的,這意味着你進入else並保存「locid」爲「preflocid」。下一次「locid」設置爲,您將進入if,然後進入第一個,如果因爲「locid」.equalsIgnoreCase(prefresid)。

要刪除的onDestroy喜好,只是稱這個:

@Override 
protected void onDestroy() { 
    SharedPreferences.Editor e = PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit(); 
    e.clear(); 
    e.commit(); 
} 
+0

@erik感謝buddy正是我需要的一個。 :-)完成!!!! – samir 2012-02-28 07:15:51