2011-04-17 108 views
5

當用戶退出應用程序時,我可以通過哪種方式保存複選框的狀態(選中或未選中),以便在應用程序重新啓動時可以重新加載此狀態?如何在用戶退出應用程序時保存Android CheckBox的狀態?

@Override 
public void onPause() 
{ 

    super.onPause(); 
    save(itemChecked); 
} 
@Override 
public void onResume() 
{ 
    super.onResume(); 
    checkOld = load(); 

    for (int i = 0 ; i < checkOld.length; i++) 
    { 
     notes.ctv.get(i).setChecked(checkOld[i]); 
    } 
} 
@Override 
public void onRestart() 
{ 
    super.onResume(); 
    checkOld = load(); 

    for (int i = 0 ; i < checkOld.length; i++) 
    { 
     notes.ctv.get(i).setChecked(checkOld[i]); 
    } 
} 

private void save(final boolean[] isChecked) { 
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPreferences.edit(); 
insertState(); 
for(Integer i = 0; i < isChecked.length; i++) 
{ 
    editor.putBoolean(i.toString(), isChecked[i]); 
} 
editor.commit(); 
} 

private boolean[] load() { 
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
    boolean [] reChecked = new boolean[itemChecked.length]; 
    for(Integer i = 0; i < itemChecked.length; i++) 
    { 
     reChecked[i] = sharedPreferences.getBoolean(i.toString(), false); 
    } 
    return reChecked; 
} 

回答

21

結合onPause()onResume()保存和加載你的CheckBox值。

示例代碼:

@Override 
public void onPause() { 
    super.onPause(); 
    save(mCheckBox.isChecked()); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    mCheckBox.setChecked(load()); 
} 

private void save(final boolean isChecked) { 
    SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putBoolean("check", isChecked); 
    editor.commit(); 
} 

private boolean load() { 
    SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE); 
    return sharedPreferences.getBoolean("check", false); 
} 
+0

@Viktor我TREID您的解決方案,但你可以看到我提到的CheckBox,所以我改變了你的代碼點點使其Accpet頭的布爾數組,但仍然我得到的所有複選框雖然我在關閉應用程序之前檢查了其中的幾個,但未選中。任何想法爲什麼?我甚至嘗試過在onRestart函數中使用onResume代碼,但它仍然不起作用。請幫忙。 – Varundroid 2011-04-17 11:39:03

+0

編輯你的問題並在那裏發佈你的代碼。 – Wroclai 2011-04-17 11:42:46

+0

@Viktor完成。現在請檢查我做錯了什麼。 .i也添加了我的適配器代碼,因此您可以輕鬆理解我的工作。在上面的代碼註釋中是我的adapter.i有一個實例,我還需要在我的onCreate函數中執行一些額外的問題,例如檢查是否有SharedPreference然後加載它或類似的東西 – Varundroid 2011-04-17 11:50:48

相關問題