5

Sherlock ActionBar 라이브러리를 사용하고 있는데 ActionBar.TabListener (내 탭용)를 구현하는 SherlockFragmentActivity가 있고 각각 3 개의 탭이 있습니다 ... 각각은 SherlockFragment입니다. 내가 회전 할 때 전체 활동이 재생성되고 조각 내 onCreate에 선언 된 모든 변수가 손실됩니다. 어떻게 해결할 수 있을까요?탭 내의 조각 회전 할 때 모든 데이터가 손실됩니까?

나는 액티비티 대신 탭을 사용하여 파편을 사용해야한다고 생각했다. 틀린가?

EDIT : 현재 해결 방법은 탭 활동에 정적 목록을 포함하고 onPause에서 해당 목록에 조각을 밀어 넣는 것입니다 (그리고 다시 onResume에서 물건을 가져 오는 것). 나는 정말로이 일을 좋아하지 않으며 더 나은 방법이 있어야한다는 것을 알고 있습니다.

if (savedInstanceState == null)에 대해서도 시도했지만 작동하지 않는 것 같습니다. 내 Fragments를 보유한 활동이 다시 만들어지고 탭을 다시 만들어야하기 때문이라고 생각합니다.

+0

당신이 조각을 유지하고 있는가? –

+0

아마도 그렇지 않습니까? 응용 프로그램에서 단편을 사용한 것은 이번이 처음입니다. – snotyak

+1

setRetainInstance() 또는 이와 비슷한 메소드가 있어야합니다. 나는 지금 아주 가난한 관계에 있으므로, 당신을 위해 그것을 확인할 수 없습니다. –

답변

5

Fragment 클래스에 setRetainInstance()이라는 메서드가 있는데,이 값을 true으로 설정해야합니다. 이렇게하면 파편의 인스턴스가 저장되고 onCreate()에 저장된 인스턴스가 있는지 확인할 수 있습니다. 가능 여기

상세 정보 : http://developer.android.com/reference/android/app/Fragment.html

+1

감사합니다. 이것은 내가 이전에 내가의 onConfigurationChanged에서이 물건을 처리 한 모든 재 작성, 탭 활동 – snotyak

+0

좋은 일 내에서 onCreate() 내에서 을 { // 탭을 을 만들} 경우 (savedInstanceState == NULL)에 추가로 필요한 것입니다 새로운 레이아웃을위한 조각. 귀하의 솔루션이 더 효과적 일 수 있습니다. –

+0

@ GökhanBarışAker 그래야합니다 :-) –