简体   繁体   English

更新FragmentPagerAdapter中的当前片段

[英]Update the current fragment in FragmentPagerAdapter

I have a viewPager with tab indicator. 我有一个带有标签指示器的viewPager。 The ViewPager is setAdaper with a FragmentPagerAdapter. ViewPager是带有FragmentPagerAdapter的setAdaper。

I have little understanding how the internals of FragmentPagerAdapter work. 我几乎不了解FragmentPagerAdapter的内部是如何工作的。 I noticed that the neighbor fragments are resumed ( OnResume is called ) , even though the neighbor are not yet visible. 我注意到邻居片段已恢复(OnResume被调用),即使邻居尚未可见。

I put the update methods in OnResume thinking that once the fragment is current, it will be updated. 我把更新方法放在OnResume中,认为一旦片段是最新的,它就会被更新。

Ad banner refresh 广告横幅刷新
I want the ad banner set in the footer to update when swiping to the left once or swipping once to the right . 我希望在向左滑动一次或向右滑动一次时,页脚中设置的广告横幅更新。 The neighbor fragments are not recreated ( good thing ). 不重建邻居片段(好事)。 But onResume is already called avoiding the banner refresh. 但onResume已被称为避免横幅刷新。 The method loadBannerAd is in OnResume() method. loadBannerAd方法在OnResume()方法中。



How can I call the method loadBannerAd() only for the current fragment by a method inside the fragment ? 如何通过片段内的方法仅为当前片段调用方法loadBannerAd()?

EDIT : I already know about mViewPager.setOnPageChangeListener() . 编辑:我已经知道mViewPager.setOnPageChangeListener()。

    OnPageChangeListener mOnPageChangeListener = new ViewPager.OnPageChangeListener() {

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

        ....
    };

But there is a danger when the fragment has not been created yet . 但是尚未创建片段存在危险。 Managing whether the fragment has been created or not in the Activty defeats the purepose of it. 管理是否已在Activty中创建片段会使其失效。

在此输入图像描述

You simply use: 你只需使用:

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

            }
        })

Then you can handle what happens in onPageSelected(int index) . 然后你可以处理onPageSelected(int index)发生的事情。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM