我使用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中的默认值,应该在没有预定义键的情况下返回。请看一看,告诉我我做错了什么。感谢
答案 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]);