从未调用ViewPager的onPageSelected

时间:2014-11-29 06:19:44

标签: android

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

我的简单代码:

    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。或者我应该实施它?这是必须的吗?

1 个答案:

答案 0 :(得分:21)

如果将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

    }
});

希望这能帮助你ツ