2012-05-23 4 views
11

나는 응용 프로그램에서 android.support.v4.view.ViewPager을 사용하고 있습니다.ViewPager를 사용할 때 savedInstanceState를 처리하는 방법은 무엇입니까?

사용자가 화면을 회전하면 활동이 삭제되고 다시 작성됩니다. ViewPager에서 현재 활성화되어있는 조각 (일반적으로 화면의 하나, 왼쪽의 하나, 오른쪽의 하나)은 모두 savedInstanceState에 저장됩니다.

새 활동이 생성되고 FragmentActivity.onCreate(savedInstanceState)이 조각 상태와 함께 호출되며이 세 조각은 번들을 사용하여 다시 작성됩니다. 그러나 onCreateViewPagerViewPager 어댑터를 설정합니다.이 어댑터는 자체 조각을 새로 작성하므로이 세 조각 각각 두 개가 생성됩니다.

처음부터 다시 만들지 않고 자동으로 다시 만든 조각을 ViewPager의 어댑터와 연결하려면 어떻게해야합니까?

답변

17

신경 쓰지 마세요. FragmentPagerAdapter을 잘못 사용하고있는 것 같습니다.

FragmentPagerAdapter을 사용하는 올바른 방법은 getItem()에 새 조각을 인스턴스화하는 것입니다. 어댑터의 생성자에서 모든 조각을 인스턴스화하는 대신 배열에 저장 한 다음 배열에서 찾고 해당 조각을 getItem()에 반환했습니다.

getItem()에서 조각을 인스턴스화하면 FragmentPagerAdapter.instantiateItem()은 새 조각을 인스턴스화하는 대신 재활용 조각을 자동으로 사용합니다.

+0

생명의 은인, 감사합니다. – Simon

관련 문제