android,无法删除SharedReferences

android,无法删除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

我有一个动态ui,用户可以在其中添加和删除元素。在onPause之后,我将ui的当前状态(字符串、整数等)保存在SharedReferences上,以便稍后在onResume()调用中重新创建ui

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();
}