listview에 연결된 체크박스를 선택한 상태에서 전화가오거나 다른어플을 실행후 다시 listview화면으로 돌아와도
체크박스가 저장된 상태를 유지하고 싶습니다.
그래서 onResume()과 onPause()를 사용하였는데요.. 잘못되었는지 에러가 나네요..
오류 내용은 onResume activity가 nullpoint라고 나오네요..
그리고 제가한 코드가 맞는건지도좀 확인부탁드릴게요
소스코드는 이렇습니다.
@Override
protected void onResume(){
@SuppressWarnings("unchecked")
Map<String, String> savedContacts = (Map<String, String>) preferences.getAll();
for (String key : savedContacts.keySet()) {
selectedContacts.add(key);
}
checklist.setChecked(load());
super.onResume();
}
private boolean load(){
preferences = getSharedPreferences(("selected_contacts"),Context.MODE_PRIVATE);
return preferences.getBoolean("selected_contacts", false);
}
@Override
protected void onPause(){
saveState(checklist.isChecked());
super.onPause();
}
private void saveState(final boolean isChecked){
SharedPreferences.Editor editor = preferences.edit();
editor.clear();
for (String selectedContact : selectedContacts) {
editor.putString(selectedContact, selectedContact);
editor.putBoolean("selected_contacts",isChecked);
}
editor.commit();
}




보이는 소스만으로는
Map<String, String> savedContacts = (Map<String, String>) preferences.getAll();
이부분에서 nullpointer 날것 같은데 말이죠~