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

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

当当前页面被更改并且相应的片段从屏幕上滑出时,它不会暂停或停止。 (!)

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

如何检测到片段之一不再显示或返回显示?

最佳答案

您可以使用侦听器。

        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
                }
            }
        });
    }

10-08 18:24