1

FragmentStatePageAdapter(android.support.v4)を使用しており、setOffscreenPageLimitを2に設定しているため、現在表示されているフラグメントの前後にフラグメント2を作成して保存します。

問題:画面外のフラグメントが作成されると、まだ画面にペイントされていなくても、すぐに開始および再開されます。(!)

現在のページが変更され、対応するフラグメントが画面からスワイプされても、一時停止または停止されません。(!)

FSPAとそのスーパークラスのすべてのコールバックの動作をログに記録しようとしました-setPrimaryItemは使用可能に最も近いものですが、フラグメントが表示されるときだけでなく、さまざまな理由で呼び出されるようです。

フラグメントの1つが表示されなくなったこと、または表示に戻ったことをどのように検出できますか?

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 に答える