2010-04-13 2 views
13

간단한 앱 시나리오를 설명하려고합니다. 내 앱이 '기본보기'로 바로 이동합니다. 이 메인보기에서 나는 을 삽입했습니다. 이것은 PreferenceManager의 방법으로 생성 된 현재 설정을 보여줍니다. 간단히하기 위해 설정에 체크 박스가 있다고 가정 해 봅시다. 처음 앱을 시작하면 내 기본보기의 TextView에 내 체크 박스 설정이 올바르게 표시됩니다 (true). 이제 설정 메뉴로 가서 팝업으로 바꾼 다음 false로 변경합니다. 나는 메인보기로 돌아가 아무 변화도 보지 않는다. 내가 거짓으로 바꾼 후에도 여전히 진실이라고합니다. 앱을 종료하고 다시 시작하면 모든 것이 잘되고 내 변경 사항이 표시됩니다.환경 설정 (설정)을 변경 한 후 설정을 나타내는 텍스트가 업데이트되지 않습니다.

설정을 변경하는 동안 기본보기가 백그라운드에 그대로 유지됩니다. 설정을 변경 한 후 기본보기를 다시 그리거나 업데이트하려면 어떻게해야합니까?

답변

5

기본 설정으로 이동하면 현재 작업을 일시 중지하고 돌아갈 때 작업을 다시 시작해야합니다 (라이프 사이클 다이어그램 lifecycle diagram on the android site 참조). 내가 생각한 onResume() 내에서 일종의 다시 그리기를 트리거 할 수 있어야합니다. 그러면 페이지의 데이터가 다시 채워집니다. 어떤 종류의 invalidate() 호출은 그렇게 할 것입니다.

+0

감사합니다, 지금이 조사 시작합니다 - 나는 감사 당신의 시각! – Allan

+0

나는 초심자이므로 나에게 너무 어렵지 않기를 바란다. (나는 다른 사람들에게 도움과 예제를 너무 많이 가져다 줄 것이다.) – Allan

22

당신은 당신의 주요 활동에 OnSharedPreferenceChangeListener을 구현할 수 :

@Override 
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { 
    if (PREFKEY_OF_INTEREST.equals(key)) 
     updateSomethingInMainView(); 
} 

과에서 onCreate에서

()를 호출하여 도움을

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
prefs.registerOnSharedPreferenceChangeListener(this); 
+0

나를 도와 주신 모든 분들께 감사드립니다. 그 onResume 트릭을 했어! – Allan

관련 문제