Android - 即使我存储了true,SharedPreference.getBoolean检索为false?

时间:2011-04-20 08:39:57

标签: android checkbox state sharedpreferences

我使用SharedPreference来存储复选框的状态,但即使我在其中存储true,它仍然检索false。

这是我的代码 -

@Override
public void onPause()
{
    super.onPause();
    saveState();
}


@Override
public void onResume()
{
    super.onResume();
    loadState();

}
@Override
public void onRestart()
{
    super.onRestart();
    loadState();
}

public void saveState()
{
    SharedPreferences sp = getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    for(int i = 0; i < itemCheck.length; i++)
    {
        Boolean b = itemCheck[i];
        Log.e(TAG, b.toString());
        editor.putBoolean(i+"", itemCheck[i]);
    }
}
public void loadState()
{
    SharedPreferences sp = getPreferences(Context.MODE_PRIVATE);
    for(int i = 0; i < itemCheck.length; i++)
    {

        itemCheck[i] = sp.getBoolean(i+"", false);
        Boolean b = itemCheck[i];
        Log.e(TAG, b.toString());
    }
    for(int i = 0; i < itemCheck.length; i++)
    {
        lv.setItemChecked(i, itemCheck[i]);
    }
}

它给我假,因为我将false设置为getBoolean中的默认值,应该在没有预定义键的情况下返回。请看一看,告诉我我做错了什么。感谢

2 个答案:

答案 0 :(得分:2)

你永远不会在你的editor上致电commit()我认为:) 试试这个:

public void saveState()
{
    SharedPreferences sp = getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sp.edit();
    for(int i = 0; i < itemCheck.length; i++)
    {
        Boolean b = itemCheck[i];
        Log.e(TAG, b.toString());
        editor.putBoolean(i+"", itemCheck[i]);
    }
    editor.commit();
}

答案 1 :(得分:2)

editor.commit()

之后使用editor.putBoolean(i+"", itemCheck[i]);