Fragment내에서 ViewPager를 선언하고, 그 ViewPager내에 또 다수의 Fragment들이 들어가도록 코드를 작성하고 있었다.

 

대략 다음과 같은 코드를 사용했다.

// Fragment의 OnCreateView() 내부코드!

MoviePagerAdapter adapter = new MoviePagerAdapter(getFragmentManager());

for(Movie movie : movies){
  ...
  adapter.addItem(frag);
}

pager.setAdapter(adapter);

처음 앱이 작동될때는 문제없이 Fragment내에 ViewPager가 표시되었다.

하지만 다른 액티비티로 이동하여 onDestroyView()가 호출된 이후,

onCreateView(), onResume()등을 거쳐 다시 해당 Fragment가 화면에 올라왔을때는 ViewPager가 사라지는 문제가 발생했다.(다른 버튼과 텍스트박스 등은 문제없이 보여짐!)

 

onSaveInstanceState(), onViewStateRestore()에서의 문제인줄알고 그쪽만 생각했는데

알고보니 다른곳에 문제가 있었다.

 

Fragment안에서 또다른 Fragment를 관리하는 경우에는,

 

getFragmentManager()가 아닌, getChildFragmentManager() 를 사용해야 한다!

 

따라서,

// Fragment의 OnCreateView() 내부코드!

MoviePagerAdapter adapter = new MoviePagerAdapter(getChildFragmentManager());

for(Movie movie : movies){
  ...
  adapter.addItem(frag);
}

pager.setAdapter(adapter);

Child 한 단어만 추가했는데 문제가 바로 해결되었다,,, 허무

+ Recent posts