2013-04-18 8 views
6

Mam viewPager ze wskaźnikiem tabulacji. ViewPager jest ustawionyAdapt z FragmentPagerAdapter.Zaktualizuj bieżący fragment w FragmentPagerAdapterie

Nie mam pojęcia, jak działają wewnętrzne elementy FragmentPagerAdapter. Zauważyłem, że fragmenty sąsiada są wznawiane (nazwa OnResume jest nazywana), nawet jeśli sąsiad nie jest jeszcze widoczny.

Ustanawiam metody aktualizacji w OnResume, myśląc, że gdy fragment jest aktualny, zostanie zaktualizowany.

baner odświeżania
chcę baner ustawiony w stopce zaktualizować kiedy przesuwając w lewo, raz lub swipping raz w prawo. Fragmenty sąsiadów nie są odtwarzane (dobrze). Ale onResume jest już nazywany unikaniem odświeżania banera. Metoda loadBannerAd jest w metodzie OnResume().



W jaki sposób można wywołać metodę loadBannerAd() tylko dla bieżącego fragmentu uzyskanego metodą wewnątrz fragmentu?

EDYCJA: Wiem już o mViewPager.setOnPageChangeListener().

OnPageChangeListener mOnPageChangeListener = new ViewPager.OnPageChangeListener() { 

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

     .... 
    }; 

Istnieje jednak niebezpieczeństwo, gdy fragment nie został jeszcze utworzony. Zarządzanie tym, czy fragment został utworzony, czy nie, w Activty, pokonuje jego cel.

enter image description here

Odpowiedz

6

po prostu użyć:

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 

      } 
     }) 

Następnie można obsłużyć, co dzieje się w onPageSelected(int index).

+0

dzięki Warpzit, wiedziałem o tej metodzie. Czy jest coś bardziej eleganckiego (mam na myśli metodę zwaną w samym fragmencie)? –

+0

@raychenon nie, przeszukałem i przetestowałem wszystko, ale jest to całkiem eleganckie. Możesz wywołać metodę w tym fragmencie za każdym razem, gdy zostanie wywołana opcja onPageSelected, jeśli jest to bardziej zgodne z Twoimi preferencjami ... – Warpzit