我有一个带有标签指示器的viewPager。 ViewPager是带有FragmentPagerAdapter的setAdaper。
我对FragmentPagerAdapter的内部工作原理了解甚少。
我注意到即使邻居还不可见,邻居片段也会恢复(称为OnResume)。
我将更新方法放在OnResume中,以为一旦片段是最新的,它将被更新。
广告横幅刷新
我希望在页脚中设置的广告横幅在向左滑动一次或向右滑动一次时进行更新。不重新创建邻居片段(好东西)。但是已经调用了onResume来避免横幅刷新。 loadBannerAd方法位于OnResume()方法中。
如何通过片段内部的方法仅对当前片段调用loadBannerAd()方法?
编辑:我已经知道有关mViewPager.setOnPageChangeListener()。
OnPageChangeListener mOnPageChangeListener = new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// this method can be called before the fragment 's onCreateView()
}
....
};
但是,如果尚未创建片段,则存在危险。在Activty中管理片段是否已创建将破坏其目的。
您只需使用:
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)中发生的情况。
感谢Warpzit,我知道这种方法。 有没有更优雅的东西(我的意思是在片段本身内调用的方法)
@raychenon不,我已经搜索并尝试了所有内容,但这实际上非常优雅。 如果更喜欢您的喜好,则只要调用onPageSelected即可在片段中调用方法。