FragmentStatePagerAdapter不会暂停片段

时间:2013-01-23 02:02:21

标签: android android-fragments android-lifecycle

我正在使用FragmentStatePageAdapter(android.support.v4)并且我将setOffscreenPageLimit设置为2,因此它创建并存储前面的片段2和当前显示的片段后面的2。

问题: 当屏幕外片段创建时,即使它们尚未被绘制到屏幕上,它们也会立即启动恢复。 (!)

当更改当前页面并在屏幕上滑动相应的片段时,它不会暂停已停止。 (!)

我已经尝试记录FSPA中所有回调的行为及其超类 - setPrimaryItem 最接近可用但似乎是出于各种原因而被调用,而不仅仅是片段显示。

如何检测到某个碎片不再显示或返回显示屏?

1 个答案:

答案 0 :(得分:1)

您可以使用听众。

        mPager.setOnPageChangeListener(new OnPageChangeListener(){

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }

            @Override
            public void onPageSelected(int position) {
                if(mPageSelectedListener!=null){
                    mPageSelectedListener.pageSelected(position);
                }
            }

        });

PageSelectedListener由你定义的地方

    public interface PageSelectedListener{
        public void pageSelected(int position);
    };

    public void setPageSelectedListener(PageSelectedListener l){
        mPageSelectedListener = l;
    }

在你的片段

中使用它
    if(getActivity() instanceof MyActivity
        ((MyActivity)getActivity()).setPageSelectedListener(new PageSelectedListener(){
            @Override
            public void pageSelected(int position) {
                if(position==MyAdapter.MY_PAGE){
                    // do something with currently viewed page...like resume it
                } else {
                    // do something with any other page..like pause it
                }
            }
        });
    }