android,无法删除SharedReferences
我有一个动态ui,用户可以在其中添加和删除元素。在onPause之后,我将ui的当前状态(字符串、整数等)保存在SharedReferences上,以便稍后在onResume()调用中重新创建uiandroid,无法删除SharedReferences,android,sharedpreferences,Android,Sharedpreferences,我有一个动态ui,用户可以在其中添加和删除元素。在onPause之后,我将ui的当前状态(字符串、整数等)保存在SharedReferences上,以便稍后在onResume()调用中重新创建ui protectedvoid onResume(){ SharedReferences prefs=getPreferences(Context.MODE\u PRIVATE); SharedReferences.Editor=prefs.edit(); Map savedTimers=(Map)pre
protectedvoid onResume(){
SharedReferences prefs=getPreferences(Context.MODE\u PRIVATE);
SharedReferences.Editor=prefs.edit();
Map savedTimers=(Map)prefs.getAll();
如果(savedTimers.size()>0){
对于(int i=0;i您不能将首选项用作整数,其中值表示文本视图的数量吗
在你的简历中,只需询问首选项中的号码
在这种情况下,你不需要删除,要求的长度或需要检索它们全部
如果在onresume和主类中声明pref,则可能也会发生冲突。我根本不会在onresume中声明它。找到了问题所在
在屏幕旋转的情况下,我还保存了prefs。因此,在旋转之后,我从传递给onRestoreInnstanceState()的包中重新创建gui,而相同的信息存储在共享的prefs中
在onPause()上添加对isFinishing()的测试基本上可以跳过onPause()中的代码因此没有存储pref,显示您保存它们的位置您保存首选项的方式可能存在错误。可能是您使用不同的ID创建并删除了完全不同的内容。如果您也发布了保存逻辑,这将很有帮助。
protected void onResume(){
SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
Map<String, String> savedTimers = (Map<String, String>) prefs.getAll();
if(savedTimers.size() > 0){
for(int i=0; i<savedTimers.size(); i++){
// retrieve the info saved on the prefs
// and do stuff with those (reload a dynamic gui basically)
...
//remove the timer from the prefs
editor.remove(String.valueOf(i));
}
editor.commit();
}
}
protected void onPause(){
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
for (int i=0; i<container.getChildCount()-1; i++){
// bla bla bla other code
editor.putString(String.valueOf(i), "bla bla bla");
}
editor.commit();
}