2017-11-04 1 views
0

viewpager에서 프래그먼트를 탐색 할 때마다 기본 뷰 방식으로 뷰 파인더에서 프래그먼트 재 작성을 방지하고 싶습니다. setOffscreenPageLimit (x)는이 문제를 해결할 수 있지만 작업의 onCreate에서 더 많은 조각을로드하지 않으려합니다. 이 문제를 해결하고 다음에 선택하기 위해 프래그먼트 인스턴스를 유지할 생각 이라니?뷰 페이지에서 프래그먼트 재 작성을 방지합니다.

그들은 전부는 아니지만 여러면에서 닮았 :

답변

-1

보기 호출기 두 가지 가장 많이 사용되는 클래스가 있습니다. PagerAdapter의

구현 대표 : 당신이 필요로하는 무엇

이 당신이 원하는대로 조각을 유지하고 다음 따옴표로 때마다 다시하지

FragmentPagerAdapter 공식 documentantion에서 말하는 것입니다 각 페이지는 사용자가 페이지로 돌아갈 수있는 한 프래그먼트 관리자에 지속적으로 보관되는 조각입니다.

또한 여기에 같은 문서에서 :

사용자가 방문은 메모리에 저장됩니다 각 페이지의 조각 ...

기억이를 사용하지만, 메모리는 것 귀하의 책임과 당신은 귀하의 조회수의 메모리를 관리해야합니다 그들은 많은 경우, 처음에는 50 페이지를 표시하는 좋은 생각이 아니라면 페이지의 수를 확인하십시오. 단지 10보다 적을 수 있습니다 (탭이 최선의 선택일 수 있습니다). 너는 좋다. 단편 인스턴스 상태의 임의의 양에 저장할 수 있기 때문에 이것은 많은 양의 메모리를 사용하여 발생할 수 있습니다

: 메모리 관리는 유일하게 자체가 말을 문서로 여기 참고을하는 것입니다. 큰 페이지 집합의 경우 FragmentStatePagerAdapter을 고려하십시오.

따라서 어댑터를 FragmentPagerAdapter으로 변경하면 조각이 다시 생성되지 않고 메모리에 보관됩니다.

+0

downvoting 후 의견을 남겨주세요! 그것은 쓸모없는 찾아내는 경우에 응답을있는 그대로 지키는 것이 좋습니다! 우리가 편집하거나 제거 할 수 있도록 말하십시오! – Xenolion

0

Fragment.setRetainInstance(true)으로 설정하십시오. FragmentPagerAdapter를 사용하면 기존 조각이 '라이브'로 다시 생성되지 않습니다. 그것은 분리되고 재 부착 될 것입니다.

관련 문제