繁体   English   中英

ViewPager的onPageSelected从未调用过

[英]ViewPager's onPageSelected never called

我需要实现setOnPageChangeListener因为如果向用户显示第一个片段,我需要隐藏ActionBar某个item

我的简单代码:

    viewPager.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageSelected(int page) { //never called
            // TODO Auto-generated method stub
            if(page == 0)
            {
                isSearch = false;
            }
            else
            {
                isSearch = true;
            }
            supportInvalidateOptionsMenu();
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onPageScrollStateChanged(int arg0) {
            // TODO Auto-generated method stub

        }
    });
viewPager.setCurrentItem(0); //not working

如果显示第一个片段( page == 0),则isSearch应该为false但是当我调试它时, onPageSelected永远不会被调用。

请帮助我,谢谢你的帮助。

注:我的适配器没有实现OnPageChangeListener 或者我应该实施它? 这是必须的吗?

如果将PageIndicator与Viewpager结合使用,则不会调用ViewPager的onPageChangeListener。 您应该将页面更改侦听器设置为PageIndicator,并在页面更改时调用它。

indicator.setOnPageChangeListener(new OnPageChangeListener() {

    @Override
    public void onPageSelected(int page) {
        if(page == 0)
        {
            isSearch = false;
        }
        else
        {
            isSearch = true;
        }
        supportInvalidateOptionsMenu();
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onPageScrollStateChanged(int arg0) {
        // TODO Auto-generated method stub

    }
});

希望这会对你有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM