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