web-dev-qa-db-ja.com

ViewPagerがページを変更するタイミングを決定する

ViewPager内に3つのページ(フラグメント)がありますが、そのうち2つのページのメニュー項目のみを表示したいです。

previous SO answer で指定されたコードは機能しないようです:

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

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

}

Eclipseは、@ Overrideは不要であり、superは設定できないと言っています。システムによって呼び出されることはありませんが、たとえどのページが現在表示されているかをどのように判断できますか?ここで助けてもらえますか?

125
Andrew Rabon

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.
    }
});
252
Joru

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) {

        }
    });
115
Jaydipsinh Zala

ViewPager.SimpleOnPageChangeListenerの代わりにViewPager.OnPageChangeListenerを使用して、使用するメソッドのみをオーバーライドすることもできます。

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) { }
});

このヘルプを願っています:)

編集:Android AP​​Iにより、setOnPageChangeListener (ViewPager.OnPageChangeListener listener)は非推奨です。このURLを確認してください:- Android ViewPager API

37
Hemant Sharma

コトリンの場合、

view_pager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {

            override fun onPageScrollStateChanged(state: Int) {
            }

            override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {

            }

            override fun onPageSelected(position: Int) {
            }
        })
9