我需要实现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
。或者我应该实施它?这是必须的吗?
答案 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
}
});
希望这能帮助你ツ