从视图寻呼机片段调用新片段

时间:2013-06-19 07:16:29

标签: android android-fragments android-viewpager

我的查看寻呼机有4个片段。

mAdapter = new Adapter_viewPager(getActivity().getSupportFragmentManager());
mPager = (ViewPager) view.findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
mPager.setOffscreenPageLimit(4);

以下是适配器的代码:

public class Adapter_viewPager extends FragmentPagerAdapter
{

            public Adapter_viewPager(android.support.v4.app.FragmentManager fm) 
            {
                super(fm);
            }

            @Override
            public int getCount() { 
                return 4;
            }

            @Override
            public Fragment getItem(int position) {

                switch (position) {
                case 0:
                    return new me_fragment();
                case 1:
                   return new myFriends_fragment();
                case 2:
                    return new shareFB_fragment();
                case 3:
                    return new sharePic_FB_layout();

                default:
                    return null;
                }
            }

}

现在从片段1开始,我在点击某个按钮时调用新片段。这是代码:

android.support.v4.app.FragmentManager fm = getFragmentManager();
                facebookPictureShareFragment objHomeFrag = new facebookPictureShareFragment();
                 android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
                 ft.replace(android.R.id.content, objHomeFrag);
                 ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);

                 ft.addToBackStack(null);
                 ft.commit();

当我点击该按钮时,它会成功打开此片段,但当我按下后退按钮时,它会提供例外Recursive entry to executePending Transctions

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

你无法将一个片段嵌入到另一个片段中。在这里,您将在另一个中执行一个片段事务。这是不允许的。如果您想这样做,请使用getChildFragmentManager()

mAdapter = new Adapter_viewPager(getChildFragmentManager());
mPager = (ViewPager) view.findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
mPager.setOffscreenPageLimit(4);

看看这是否有用。

答案 1 :(得分:0)

尝试:

FragmentManager fragmentManager = getActivity().getSupportFragmentManager();