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

FragmentStatePagerAdapter 새로고침 관련 질문입니당.

0 추천
뷰 페이져에  FragmentStatePagerAdapter 를 달아서

프래그먼트들을 보여주고 있습니다.

여기서 제가 궁금한건 좌우로 넘기다 보면 다른 프레그먼트들이 보여지는데,

저는 매번 즉석에서 프래그먼트를 만들어서 보여주고 싶습니다. 미리 만들어놓지 않구요.

지금은 프래그먼트 A  B C D가 있고,

A 에서 B로 올때 C를 미리 만들어두네요.

전 이렇게 미리 만드는게  아니라 A 에서 B로올때 B를 새로 만들어서 보여주고 싶습니다.

 

방향좀 제시해주시면 너무 감사해요 ㅠ 몇일째 잘 안되네요
김원장91 (1,470 포인트) 님이 2016년 2월 29일 질문

1개의 답변

0 추천
 
채택된 답변

vierPager.setOffscreenPageLimit(0);

해주시면 될것 같습니다.

 

사용한지 좀 기간이 지나서 잘은 기억이 안나지만

OnPageChangeListener를 등록한 후

onPageSelected와 onPageScrollStateChanged를 오버라이드해서 사용했던것 같습니다.

http://blog.naver.com/myfuturepp/220126098868

http://www.kmshack.kr/2014/01/android-viewpager-%EC%84%B1%EB%8A%A5%ED%96%A5%EC%83%81-%EB%B0%A9%EB%B2%95/

참고하시면 도움이 될듯 하네요.

모나미153 (17,540 포인트) 님이 2016년 2월 29일 답변
김원장91님이 2020년 6월 21일 채택됨
setOffscreenPageLimit(0); 는 동작하지 않는 코드입니다.

ViewPager 소스를 한번이라도 까봤으면 이런 답변 안달텐데말이죠.

아래 소스를 보면 디폴트 값보다 작으면 디폴트값을 설정해버립니다. 디폴트값은 1이고요.

public void setOffscreenPageLimit(int limit) {
        if (limit < DEFAULT_OFFSCREEN_PAGES) {
            Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " +
                    DEFAULT_OFFSCREEN_PAGES);
            limit = DEFAULT_OFFSCREEN_PAGES;
        }
        if (limit != mOffscreenPageLimit) {
            mOffscreenPageLimit = limit;
            populate();
        }
    }
어쩐지 해당 코드가 주석이 되있어서 왜 그랬을까 기억이 안났는데
댓글보니 생각이 났네요.
그때 한참 뷰페이저 처음 써보느라 여기저기 찾아다녔었는데
여튼 감사드리고 작성자분이 볼지는 모르겠지만 죄송하네요.
...