猿问

显示片段内的片段查看器

我有一个包含ViewPager的片段。ViewPager与包含一组片段的适配器关联。


加载父片段后,我IllegalStateException看到一条消息:java.lang.IllegalStateException: Recursive entry to executePendingTransactions。


一些研究使我得出这样的结论:系统无法显示另一个片段中的片段,但是似乎有迹象表明,使用ViewPager可以完全做到这一点(ViewPager中的错误与其他片段一起使用))。


实际上,如果我向父片段添加一个按钮,该按钮mPager.setAdapter(mAdapter)在按下时会调用ViewPager,则ViewPager将成功加载。这是不理想的。


然后,问题必须与片段生命周期有关。因此,我的问题是:还有其他人找到解决此问题的方法吗?


有什么方法可以将ViewPager上的适配器的设置延迟到片段事务之后?


这是我的父片段代码:


    @Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {


    mView = inflater.inflate(R.layout.team_card_master, container, false);

    mViewPager = (ViewPager)mView.findViewById(R.id.team_card_master_view_pager);


    final Button button = (Button)mView.findViewById(R.id.load_viewpager_button);

    button.setOnClickListener(new OnClickListener() {

        @Override

        public void onClick(View v) {

            mViewPager.setAdapter(mAdapter);

            button.setVisibility(View.GONE);

        }

    });


    mAdapter = new ViewPagerAdapter(getFragmentManager());

 //     mViewPager.setAdapter(mAdapter);


    return mView;

}

和适配器:


public class ViewPagerAdapter extends FragmentPagerAdapter {

    public ViewPagerAdapter(FragmentManager fm) {

        super(fm);

    }


    @Override

    public int getCount() {

        if (mCursor == null) return 0;

        else return mCursor.getCount();

    }


    @Override

    public Fragment getItem(int position) {

        Bundle b = createBundle(position, mCursor);

        return TeamCardFragment.newInstance(b);

    }

}


牛魔王的故事
浏览 440回答 3
3回答
随时随地看视频慕课网APP

相关分类

Android
我要回答