2014-10-24 3 views
4

을 파괴하지 않는 내가 추가() MainFragment : 내 MainFragment에서조각이에서 onCreate 방법에 내 MainActivity에서

 if (savedInstanceState == null) { 
     FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
     fragmentTransaction.add(R.id.main_view_container, new MainFragment(), MainFragment.FRAGMENT_TAG); 
     fragmentTransaction.commit(); 
    } 

내가 FragmentStatePagerAdapter와 ViewPager을 가지고 모든 페이지가 조각 자체 (PagerFragment)입니다.

버튼 클릭 후 어떤 시점에서 전체 MainFragment를 다른 Fragment (ReplacementFragment)로 바꾸고 트랜잭션을 다시 스택에 추가하여 뒤로 버튼을 누르면 MainFragment로 돌아갈 수 있습니다. 그래서 나는 다음을 수행 : 내가 트랜잭션을 커밋 후

FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction(); 
       fragmentTransaction.replace(R.id.main_view_container, new ReplacementFragment(), null); 
       fragmentTransaction.addToBackStack(null); 
       fragmentTransaction.commit(); 

이 MainFragment가 중지되고 onDestroyView()가 호출하지만 완전히 아무것도 (MainFragment에 ViewPager에) PagerFragments되지 이벤트 단일 이동 중지() 호출로 발생하지 않습니다. 그런 다음 MainFragment의 View가 onCreateView()에 다시 생성됩니다.이 뷰는 ViewPager의 새로운 인스턴스를 의미하지만 PagerFragments에는 아무 것도 없습니다.

어떻게 부모 조각 onDestroyView가 호출되지만 자식 조각에는없는 것이 가능합니까?

+0

MainFragment 내부에서 호출기 어댑터를 만들 때 getChildFragmentManager()를 사용 했습니까? – cYrixmorten

+0

전체 MainFragment를 다른 MainFragment로 대체하는 대신 새로운 활동을 열어보십시오. – Karakuri

+0

@cYrixmorten 아니요. Activity의 FragmentManager를 사용했기 때문에 하위 조각이 관리되지 않는 이유가 여기에 있습니다. 내 사건을 해결해 줘서 고마워! –

답변

18

MainFragment 내부에서 호출기 어댑터를 만들 때는 getChildFragmentManager()를 사용해야합니다.

+1

정말 해결 되나요? MainFragment에서 getChildFragmentManager()를 사용했지만 PagerFragments는 결코 멈추지 않습니다. – abdfahim

관련 문제