2013-04-18 10 views
6

Ho un viewPager con indicatore di tabulazione. ViewPager è impostato suAdaper con FragmentPagerAdapter.Aggiorna il frammento corrente in FragmentPagerAdapter

Non riesco a capire come funzionano gli interni di FragmentPagerAdapter. Ho notato che i frammenti dei vicini sono stati ripristinati (viene chiamato OnResume), anche se i vicini non sono ancora visibili.

Ho inserito i metodi di aggiornamento in OnResume pensando che una volta che il frammento è aggiornato, verrà aggiornato.

banner pubblicitario di aggiornamento
Voglio che il banner impostato nel piè di pagina per aggiornare quando scorrendo verso sinistra una o swipping una volta a destra. I frammenti vicini non vengono ricreati (buona cosa). Ma onResume è già stato chiamato evitando il refresh del banner. Il metodo loadBannerAd è nel metodo OnResume().



Come posso chiamare il metodo loadBannerAd() solo per il frammento corrente con un metodo all'interno del frammento?

MODIFICA: conosco già mViewPager.setOnPageChangeListener().

OnPageChangeListener mOnPageChangeListener = new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int position) { 
     // this method can be called before the fragment 's onCreateView() 
     } 

     .... 
    }; 

Ma c'è un pericolo quando il frammento non è stato ancora creato. Gestire se il frammento è stato creato o meno nell'Attivazione sconfigge il puro scopo di esso.

enter image description here

risposta

6

è sufficiente utilizzare:

mViewPager.setOnPageChangeListener(new OnPageChangeListener() { 

      @Override 
      public void onPageSelected(int index) { 
       // TODO Auto-generated method stub 

      } 

      @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 

      } 
     }) 

Quindi è in grado di gestire ciò che accade in onPageSelected(int index).

+0

grazie a Warpzit, sapevo di questo metodo. C'è qualcosa di più elegante (intendo un metodo chiamato all'interno del frammento stesso) –

+0

@raychenon no, ho cercato e provato tutto ma in realtà è abbastanza elegante. Puoi chiamare un metodo nel frammento ogni volta che onPageSelected viene chiamato se questo è più per le tue preferenze ... – Warpzit

Problemi correlati