마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ViewPager 사용 시 Fragment 사라지는 현상 질문

0 추천
안녕하세요.

ViewPager를 이용할때 Fragment를 이용해서 구현하고 있습니다.

 

구조는 Viewpager안의 Fragment의 한 레이아웃을 이용해서 Fragment replace를 해주고 있는데요.

 

addBackstack(null) 을 이용하지 않았을 경우에는 이상이 없는데

addBackStack(null) 을 설정해 주고 replace하고 나서 뷰페이저의 페이지를 바꿨을 경우

replace된 Fragment가 사라지고 처음의 Fragment가 나타나고 있습니다.

처음의 Fragment는 addBackStack을 해주지 않아서 나타나는 것으로 보이고요.

 

혹시 같은 경험한분 계신가요?

ViewPager나 Fragment는 서포트 라이브러리 v4를 이용하였습니다.

 

답을 안주셔도 되니 의견을 나누고 싶어요.

방법을 바꿔야하나...
chemkaaa (6,030 포인트) 님이 2014년 7월 23일 질문

2개의 답변

+1 추천
 
채택된 답변
편의상... Viewpager안의 플래그먼트를 Fragment_(n)
 
Fragment 내부의 레이아웃을 이용한 플래그먼트를 ChildFragment_1, ChildFragment_2라고 할께요...
 
Fragment_1의 내부에 ChildFragment_1 을 ChildFragment_2로 replace했고 Fragment_2또는 3 또는 4 처럼 이동 후 다시 돌아오면 Fragment1의 플래그먼트가 ChildFragment_1로 되돌아 가는 현상을 말하신건가요?
 
  • ViewPager의 아이템 유지갯수는 어떻게 되나요? get/setOffScreenPageLimit. 자원 많이 먹는 플래그먼트들이 아니라면 해결책이 될수도...?
  • ChildFragment들을 가지고있는 PagerFragment_1에서 getChildFragmentManager를 이용해서 replace하신거죠? ChildFragment의 오너인 Fragment_1는 onSaveInstanceState에서는 어떤 처리가 되어있나요? 페이지를 이동한 후 복구 될 Fragment_1을 복구하기 위한 putFragment를 하고 있나요?
 
 
칠리님 (10,910 포인트) 님이 2014년 7월 24일 답변
chemkaaa님이 2014년 7월 24일 채택됨
답변감사합니다.
첫번째 해결책으로 제시한 부분으로는 해결되지 않았습니다.(이미 뷰페이저의 아이템 유지갯수를 페이지 수많큼으로 조절해놨어요.setOffScreenPageLimit을 이용했고요. )

두번째 해결책으로는 getChildFragmentManager을 이용해 처리를 했으나 back 버튼이 (이전으로 가야할 동작이 앱을 빠져나감.)안먹히는 결과가 나오더라고요.

개인적으로 임시방편해결책으로  getFragmentManager를 통해서 replace를 했고 각 프래그먼트마다 onKey Back이벤트를 잡아와서 pop 처리를 했습니다. 크게 문제는 안되지만 전의 뷰가 리프레쉬되네요.
원래 기획상 리프레쉬되는게 기획이라 크게 문제는 안되지만 먼가 찜찜한 기분...

ㅠ ㅠ

답감사합니다.
0 추천
Fragment에 addBackStack메서드는.. Back버튼을 누르면 이전 Fragment를 호출합니다..
whdrb19 (23,520 포인트) 님이 2014년 7월 24일 답변
...