1

우선이 설명이 불분명하면 미안하지만 안드로이드는 처음입니다. 사용자가 동적으로 추가 한 조각을 보여주는 주 활동에 ViewPager가 있습니다. 프래그먼트는 처음에 액티비티가 시작될 때 생성되고 어댑터를 통해 ViewPager에 추가됩니다. 즉, 어댑터는 적절한 프래그먼트를 반환하기 때문에 ViewPager가 처음으로 프래그먼트를 검색 할 때 프래그먼트의 내용이 올바르게 생성됩니다.조각을 복원하는 올바른 방법은 무엇입니까?

오리 엔테이션 변경 후 주 활동이 복원되면서 모든 조각이 부활 할 때 어댑터가 새로 생성 된 사용자 단편화 메소드에서 리턴하려고 할 때 createView()가 더 이상 호출되지 않고 NullPointerException으로 실패합니다. ViewPager는 초기에 첨부 된 프래그먼트를 보유하고 있으며 동일한 위치에서 새로 추가 된 프래그먼트에 대해서는 createView()를 호출하지 않습니다.

조각 라이프 사이클에서 중요한 부분을 놓치고 있다는 느낌이 들었습니다. 나는 디자인을 바꾸고 싶지 않다. 내 주요 질문은 올바른 방법은 활동이 복원 된 후 ViewPage에 추가 된 조각을 반환하는 것입니다 무엇입니까? 최근 첨부 된 조각을 찾을 방법이 있습니까?

답변

3

조각이 이미 존재하면 다시 사용됩니다. 그러나 단편의 상태는 그렇지 않습니다. 자세한 내용은 http://developer.android.com/training/basics/activity-lifecycle/recreating.html을 참조하십시오.

특히 당신이 NullPointerException이 생성하는 필드를 다시 채워야하는 방법으로 onSavedInstanceStateonRestoreInstanceState을 무시 보라

확인하려면 조각의 인스턴스가 이미 당신과 같이 'findFragmentByTag'를 사용할 수 있습니다 작성된 경우 :

'frag'에서 끝나는 것은 무엇이든간에, 사용자에게이를 보여줍니다.

+0

내 관심사는 ViewPager에서 다시 사용하게 될 부분을 찾아야한다는 것입니다. 제 디자인은 프래그먼트가 ViewPager에서 유지되고 새로운 프래그먼트를 생성한다는 가정을하지 않습니다. 그래서 새로운 하나를 만드는 대신 첨부 된 하나를 찾아서 어댑터에서 반환해야합니다. –

+0

이미 존재하는 조각을 검색하는 한 가지 방법을 보여주는 내 대답에 대한 업데이트를 참조하십시오. 희망이 도움이 – CurlyPaul

+0

내가 볼, 그래서 FragmentManager는 활동의 부활에 조각을 인접 해 처리합니다. 나는 그것으로 시도했지만 다른 경우에. 나는 이것을 지금 시도 할 것이다. 고맙습니다! –

관련 문제