2014-11-29 18 views
8

Muszę zaimplementować setOnPageChangeListener, ponieważ muszę ukryć pewne item od ActionBar, jeśli pierwszy fragment zostanie wyświetlony użytkownikowi.ViewPager's onPageSelected nigdy nie nazywał się

mój prosty kod:

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 

Jeśli pierwszy fragment jest pokazany (page == 0), isSearch powinny być false ale onPageSelected nigdy uzyskiwanie wywoływana gdy debugować go.

Uprzejmie proszę o pomoc, dzięki za pomoc.

Uwaga: Mój adapter ma , a nie implementuje OnPageChangeListener. Czy powinienem to wdrożyć? Czy to musi być?

+0

czy ustawić zasilacz? –

+0

@GoranHoriaMihail tak, próbowałem również ustawić go przed i po .. ale nie ma efektu –

+1

używasz PageIndicator? proszę [sprawdź to] (http://stackoverflow.com/a/12733282/2591002) –

Odpowiedz

20

Jeśli używasz PageIndicator w połączeniu z Viewpager, to onPageChangeListener z ViewPager nie jest wywoływany. Powinieneś ustawić detektor zmiany strony na PageIndicator i zostanie on wywołany, gdy strona się zmieni.

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 

    } 
}); 

nadzieję, że pomoże Ci ツ

+2

Awesome dude ,, :) –

Powiązane problemy