2012-07-02 3 views
79

ViewPager 안에 3 개의 페이지 (단편)가 있습니다 만, 그 중 2 개의 페이지에 대한 메뉴 항목 만 표시하고자합니다.ViewPager가 페이지를 변경하는시기를 결정하십시오.

previous SO answer에 주어진 코드는 작동하지 않습니다

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 

    if (isVisibleToUser == true) { } 
    else if (isVisibleToUser == false) { } 

} 

Eclipse는 @Override가 필요하지 않은 슈퍼 설정할 수 없습니다 말했다. 시스템에 의해 호출 된 적이 없으며, 현재 페이지가 표시되는 것을 어떻게 결정할지라도 말입니다. 여기 좀 도와 줄 수 있을까요?

+0

이 솔루션은 저에게 유용하며, 주어진 솔루션을 사용하는 방법에 대한 약간의 컨텍스트를 제공합니다 : [ViewPager 탭에서 단편 내부 변경 감지] (http://stackoverflow.com/questions/9779397)/detect-viewpager-tab-change-inside-fragment). – gcl1

답변

166

사용 ViewPager.onPageChangeListener :

viewPager.addOnPageChangeListener(new OnPageChangeListener() { 
    public void onPageScrollStateChanged(int state) {} 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {} 

    public void onPageSelected(int position) { 
     // Check if this is the page you want. 
    } 
}); 
+1

1 행에 오타가 있습니다. SetOnPageChangeListener는 setOnPageChangeListener 여야합니다. – Javide

+30

대신 SimpleOnPageChangeListener를 사용하고 onPageSelected 만 재정의 할 수 있습니다. – clocksmith

+0

올바른 대답을 제공하기 위해 고침 – Jigsh

101

ViewPager.setOnPageChangeListener는 이제 사용되지 않습니다. 이제 ViewPager.addOnPageChangeListener을 사용해야합니다. 예를 들어

,

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

     } 

     @Override 
     public void onPageSelected(int position) { 

     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    }); 
+2

나는 이해하지 못하는 것 같습니다. 절대적인 초보자입니다. 그러면 우리는 그 방법들에 무엇을 넣어야합니까? 'addOnPageChangeListener'를 배울 곳을 좀 도와주세요. –

+0

+1 정보에 대해,하지만이 두 가지'ViewPager.SimpleOnPageChangeListener'와'ViewPager.OnPageChangeListener'의 차이점은 무엇입니까? – RoCk

+2

@RoCk SimpleOnPageChangeListener를 사용하면 실제로 사용하려는 메서드를 재정 의하여해야합니다. 예를 들어 http://stackoverflow.com/a/31961397/608312를 참조하십시오. – JakeSteam

31

당신은 대신 ViewPager.OnPageChangeListenerViewPager.SimpleOnPageChangeListener을 사용하고 사용하려는 경우에만 이러한 방법을 대체 할 수 있습니다.

viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 

    // optional 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } 

    // optional 
    @Override 
    public void onPageSelected(int position) { } 

    // optional 
    @Override 
    public void onPageScrollStateChanged(int state) { } 
}); 

희망이 도움 :)

편집 : 은 안드로이드 API를 당으로 setOnPageChangeListener (ViewPager.OnPageChangeListener listener)를 사용되지 않습니다. 이 URL을 확인하십시오 : - Android ViewPager API

+1

'mViewPager.setOnPageChangeListener();'는 현재 사용되지 않으므로이 함수는 정상적으로 작동합니다. –

+0

위 코드에서 상태가 변경되었는지 여부를 감지하여 onPageScrolled 메서드에서 페이지를 스크롤 할 때 현재 위치를 비교하고 비교합니다. – AnupamChugh

관련 문제