2014-10-07 83 views
1

我的項目中有2個活動。一個是SearchActivity.java,另一個是Result.java。 我在Result.java中使用sharedPreferences來保存結果,但我不需要保存所有的時間,所以我清除了SearchActivity中的ShraedPreferences。然後嘗試將結果保存到Result.java中的shardPreferences,但sharedPreferences不保存結果。 如果我沒有在SearchActivity中清除sharedPrefences,我可以將結果保存在SharedPreferences中。我清除SharedPreferences後無法保存到SharedPreferences

感謝,

SearchActivity.java

//clear old all of old data in SharedPreferences 
SharedPreferences pref = mContext.getSharedPreferences(Constants.DEFAUL_SHARE_DATA, 0); 
pref.edit().clear().commit(); 

Result.java

SharedPreferences sharedpreferences= mContext.getSharedPreferences(Constants.DEFAUL_SHARE_DATA, 0); 
Editor editor = sharedpreferences.edit(); 
editor.putString(String.valueOf(txtImage.getId()), txtImage.getText().toString());  
editor.commit(); 

回答

0

某種程度上你commitSearchActivity是越來越執行的最後一個。請參閱behavior of commit上的註釋SharedPreferences

如果您有2個實例持有對同一編輯器的引用,則最後一個獲勝。

您在SearchActivity中調用清除哪個活動生命週期方法,可能是該方法再次被調用。它可能在活動回棧中。

爲什麼不老數據清除移動到Result.java開始(可在onCreate開始)

+0

感謝回答我,爲什麼我救的結果sharedpreferences是我不喜歡的用戶再次搜索他們已經搜查過了,或者他們是否無意中按下了。我認爲清除並提交onCreate中的共享首選項會清除結果,並且無法顯示他們搜索的最後結果。 – SAWAUNG 2014-10-09 04:38:30

+0

什麼是您在searchActivity中調用'clear'的方法名稱?它是創建的?一種選擇是用'if'(newsearch)pref.edit()。clear()。commit();''來確保它不會在活動生命週期中錯誤地調用'clear'。 – ashoke 2014-10-09 04:48:02