更新FragmentPagerAdapter中的当前片段

5
我有一个带有选项卡指示器的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()
        }

        ....
    };

但是当片段尚未创建时存在危险。在活动中管理片段是否已经创建会破坏它的原本意义。

输入图像描述

1个回答

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)中发生的内容。


谢谢Warpzit,我知道这种方法。有没有更优雅的方法(我的意思是在片段本身内调用的方法)? - Raymond Chenon
@raychenon 不,我已经搜索和尝试了所有的东西,但这个方法实际上非常优雅。如果这更符合您的偏好,您可以在每次调用onPageSelected时在片段中调用一个方法... - Warpzit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接