Android - SharedPreference.getBoolean извлекает ложь, даже если я храню истину? - PullRequest
0 голосов
/ 20 апреля 2011

Я использую 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]);
    }
}

Это дает мне ложь, потому что я установил ложь как значение по умолчанию в getBoolean, которое должно быть возвращено при отсутствии предопределенного ключа. Пожалуйста, посмотрите и скажите мне, что я сделал не так. Спасибо

Ответы [ 2 ]

2 голосов
/ 20 апреля 2011

использовать editor.commit() после editor.putBoolean(i+"", itemCheck[i]);

2 голосов
/ 20 апреля 2011

Вы никогда не звоните 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();
}
...