2014-10-07 54 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