我有一個包含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 回答
- 0 關注
- 466 瀏覽
添加回答
舉報
0/150
提交
取消