1

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

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

当当前页面发生变化,对应的 Fragment 被刷出屏幕时,它不会被pausedstop。(!)

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

您如何检测到您的 Fragment 之一不再显示或返回显示?

4

1 回答 1

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
                }
            }
        });
    }
于 2013-01-23T02:28:57.060 回答