2014-06-23 1 views
1

두 가지 주제를 사용하는 Android 애플리케이션이 있습니다. 테마 변경시 다시 작성해야 할 모든 활동과 단편을 다시 만들어야합니다.내 활동을 강제로 onSavedInstance 상태로 전화

저장된 응용 프로그램 상태를 사용하여 응용 프로그램을 다시 만드는 것과 같은 방법입니다.

내 활동이 저장된 인스턴스 상태를 강제로 호출 할 수있는 방법이 있습니까? 내가 그것을 어떻게 할 수 있다면 가능합니까? 이유가 없다면? 이것을 달성하기위한 대안이 있습니까?

현재 코드는 다음과 같습니다.

public static final void restartActivity(final FragmentActivity activity){ 
    activity.finish(); 
    activity.startActivity(new Intent(activity, activity.getClass())); 
} 

문제는 조각 백 스택이 다시 만들어지지 않는다는 것입니다. 어떤 도움이라도 대단히 감사하겠습니다.

+0

'onRestoreInstanceState()'를보십시오 – jhobbie

+1

onSavedInstance 상태가 활동을 닫을 때 해고되지 않습니다. 따라서 onRestoreInstanceState가 호출되지 않으며 실행 된 경우 저장된 인스턴스 상태가 null입니다. – CodeDecode

+0

활동을 재 작성해야하는 이유가 확실하지 않지만 인 텐트 엑스트라의 데이터를 새로운 활동 인스턴스로 전달하고 상태를 "복원"하는 데 사용할 수 있습니다. –

답변

0

Activity의 새 인스턴스를 만들기 때문에 상태가 저장되지 않습니다. 해결책으로 상태를 Intent 엑스트라로이 새 인스턴스에 전달하고 해당 엑스트라로부터 onCreate 상태를 복원 할 수 있습니다.

+0

인수를 설정하여 활동 내에서 포함 된 모든 조각을 재생성하는 것은 정말 힘든 작업이며 실현 가능한 해결책이라고 생각하지 않습니다. 내 질문에 거기에 활동의 상태를 유지할 수 있도록 onSavedInstance 상태를 트리거하려면 내 응용 프로그램을 강제로 어떤 방법입니다. – CodeDecode

관련 문제