2011-04-20 18 views
0

我使用SharedPreference來存儲複選框的狀態,但即使我存儲它的真實性,它仍然檢索錯誤。Android - SharedPreference.getBoolean檢索假即使我存儲爲真?

這裏是我的代碼 -

@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

你永遠不叫你的editorcommit()我認爲:) 試試這個:

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

笑我做了一個愚蠢的錯誤:P謝謝你,夥計。 – Varundroid 2011-04-20 08:52:11

2

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

+0

感謝伴侶歡呼:) – Varundroid 2011-04-20 08:52:29