2012-02-22 7 views
0

나는이 코드를 사용하여 사용자가 반환 할 때 저장되는 하나의 확인란을 가져 왔지만 응용 프로그램 전체에서 많은 확인란을 사용해야합니다. 가장 좋은 방법은이 코드를 복사하여 붙여 넣지 않는 것이지만 무엇인지 찾아 낼 수는 없습니다.여러 체크 박스 상태 저장

10 개 이상의 확인란을 사용하여이 작업을 추가하거나 변경하려면 어떻게해야합니까?

@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
private void save (final String checkboxId, final boolean isChecked) { 
    // shared prefs yadda 
    editor.putBoolean(checkboxId, isChecked).commit(); 
} 

또는 그런 식으로 (등, SQLite는) 자신의 스키마를 만들고 유지됩니다. 어떤 경우 든, 모든 고유 체크 박스는 영구 저장소에 고유 ID를 가져야합니다.

0

확인란에 배열을 저장할 수 있습니다.

@Override 
public void onPause() { 
    for (int i = 0; i < checkBoxArr.length; i++) { 
     save(i, checkBoxArr[i].isChecked()); 
    } 
} 

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

// etc...