2013-04-18 16 views
6

タブインジケータ付きのviewPagerがあります。 ViewPagerはFragmentPagerAdapterを持つsetAdaperです。FragmentPagerAdapterの現在のフラグメントを更新します。

私はFragmentPagerAdapterの内部がどのように機能するかをほとんど理解していません。 ネイバーがまだ表示されていなくても、ネイバーフラグメントが再開されていることがわかりました(OnResumeが呼び出されます)。

OnResumeに更新メソッドを追加すると、フラグメントが最新になったら更新されます。

広告バナーリフレッシュ
私は一度左にスワイプするか、右に一度swippingときフッターに設定された広告バナーを更新したいです。隣の断片は再現されません(良いこと)。しかし、onResumeは既にバナーのリフレッシュを避けるように呼び出されています。 loadBannerAdメソッドはOnResume()メソッドにあります。



どのように呼び出すことができる唯一の断片内部方法により、現在のフラグメントための方法loadBannerAd()?

EDIT:既にmViewPager.setOnPageChangeListener()について知っています。

OnPageChangeListener mOnPageChangeListener = new ViewPager.OnPageChangeListener() { 

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

     .... 
    }; 

ただし、まだフラグメントが作成されていないと危険です。 Activtyでフラグメントが作成されたかどうかを管理することで、そのフラグメントが破棄されます。

enter image description here

答えて

6

あなたは、単に使用します。

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 

      } 
     }) 

次にあなたがonPageSelected(int index)に何が起こるかを処理することができます。

+0

Warpzitに感謝します。私はこの方法について知っていました。よりエレガントなものがありますか(私は、そのフラグメント自体の中で呼び出されるメソッドを意味します) –

+0

@raychenonいいえ、私はすべてを検索して試しましたが、これは実際にはかなりエレガントです。 onPageSelectedが呼び出されるたびにフラグメント内のメソッドを呼び出すことができます。 – Warpzit

関連する問題