我有一个包含ViewPager的片段。ViewPager与包含一组片段的适配器关联。加载父片段后,我IllegalStateException看到一条消息:java.lang.IllegalStateException: Recursive entry to executePendingTransactions。一些研究使我得出这样的结论:系统无法显示另一个片段中的片段,但是似乎有迹象表明,使用ViewPager可以完全做到这一点(ViewPager中的错误与其他片段一起使用))。实际上,如果我向父片段添加一个按钮,该按钮mPager.setAdapter(mAdapter)在按下时会调用ViewPager,则ViewPager将成功加载。这是不理想的。然后,问题必须与片段生命周期有关。因此,我的问题是:还有其他人找到解决此问题的方法吗?有什么方法可以将ViewPager上的适配器的设置延迟到片段事务之后?这是我的父片段代码: @Overridepublic 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); }}
3 回答
- 3 回答
- 0 关注
- 439 浏览
添加回答
举报
0/150
提交
取消