2014-11-29 20 views
8

Ich muss implementieren, weil ich bestimmte von ActionBar verstecken muss, wenn das erste Fragment dem Benutzer angezeigt wird.ViewPager onPageSelected nie aufgerufen

Mein einfacher Code:

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 

Wenn das erste Fragment (page == 0) gezeigt ist, sollte isSearchfalse sein, aber die onPageSelected nie aufgerufen zu werden, wenn ich es debuggen.

Bitte kindly mir helfen, Danke für Ihre Hilfe.

Hinweis: Mein Adapter funktioniert nicht implementiert OnPageChangeListener. Oder sollte ich es umsetzen? Ist es ein Muss?

+0

helfen gesetzt haben Sie den Adapter? –

+0

@GoranHoriaMihail ja, ich habe auch versucht, es vor und nach zu setzen..aber keine Wirkung –

+1

verwenden Sie PageIndicator ?? dann bitte [kreuzen Sie dies an] (http://stackoverflow.com/a/12733282/2591002) –

Antwort

20

Wenn Sie PageIndicator in Verbindung mit dem Viewpager verwenden, wird der onPageChangeListener des ViewPagers nicht aufgerufen. Sie sollten einen Seitenwechsel-Listener auf den PageIndicator setzen und er wird aufgerufen, wenn sich die Seite ändert.

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 

    } 
}); 

Hoffnung dieses Sie ツ

+2

Awesome Kumpel ,, :) –

Verwandte Themen