7

오리 엔테이션 변경이 주어진 상태를 복원하려고 시도하는 중첩 된 조각이 있습니다.중첩 된 조각을 저장하고 복원 할 수 없습니까?

그래서 먼저 내 설정은 다음과됩니다 같이 그러나

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    // Serialize the current dropdown position. 
    outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActivity().getActionBar() 
      .getSelectedNavigationIndex()); 
} 

반환 나는 모든 라이프 사이클 이벤트에서 장치의 방향을 때 다음과 같이 내 아이의 조각에서

Activity -> ParentFragment (SetRetainInstance(true)) -> ChildFragment 

내가 onSaveInstance 코드가 null의 savedInstance 상태

ChildFragment에서이 작업을 잘못하고 있습니까? 내주의 사항이 저장되고 반환되지 않는 이유는 무엇입니까?

답변

7

부모 조각의 setRetainInstance(true)이 원인입니다. 안드로이드는 모든 자식 조각으로 조각을 유지합니다. 따라서 ChildFragment는 파괴되지 않으므로 savedInstanceState에서 null을 얻습니다. onCreateView 상태의 문서 : 여기에 주어진

savedInstanceState null이 아닌 경우,이 조각은 이전에 저장된 상태에서 재 구축되고있다.

setRetainInstance(true)을 주석 처리하고 savedInstanceState에 올바른 값을 부여 할 수 있습니다.

+0

이 솔루션이 효과가 있습니까? –

+0

예,하지만 2 년 전입니다. :) 어쩌면 뭔가가 바뀌었을 수도 있습니다. – Ayzen