在Activity的Fragments之间切换后,Android嵌套的ViewPager的Fragments不显示 [英] Android nested ViewPager's fragments dont show after switch between Fragments on Activity

查看:50
本文介绍了在Activity的Fragments之间切换后,Android嵌套的ViewPager的Fragments不显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的应用程序中,我有一个Activity,并且有一些片段,我可以在片段之间切换而不会出现任何问题.其中一个片段具有 ViewPager 和其他一些片段,在父片段和abd之间切换为带viewPager的嵌套片段后,嵌套片段不显示,我必须关闭应用程序并再次运行以显示该片段.>

主要活动:

  public void updateFragment(int selectedItem){mFragment = null;fts = getSupportFragmentManager().beginTransaction();开关(selectedItem){案例0:mFragment = new FragmentMainView();休息;情况1:mFragment = new FragmentAddNewWayBill();休息;}fts.replace(R.id.mainViewFragments,mFragment,"0");fts.c​​ommit();mDrawerState = false;} 

在此代码中,我可以在片段之间切换. FragmentMainView()的ViewPager带有一些已定义的片段.

 公共类FragmentMainView扩展Fragment {私有FragmentActivity myContext;私人ViewPager vpPager;私有FragmentManager fragManager;@Override公共无效onCreate(捆绑保存的InstanceState){super.onCreate(savedInstanceState);}@Override公共视图onCreateView(LayoutInflater充气器,ViewGroup容器,捆绑的saveInstanceState){视图view = inflater.inflate(R.layout.fragment_main_view,container,false);G.currentActivity = FragmentMainView.this.getActivity();fragManager = myContext.getSupportFragmentManager();vpPager =(ViewPager)view.findViewById(R.id.vpPager);MyPagerAdapter adapterViewPager =新的MyPagerAdapter(fragManager);vpPager.setAdapter(adapterViewPager);返回视图}公共静态类MyPagerAdapter扩展FragmentPagerAdapter {私有静态整数NUM_ITEMS = 2;公共MyPagerAdapter(FragmentManagerfragmentManager){超级(fragmentManager);}//返回总页数@Overridepublic int getCount(){返回NUM_ITEMS;}//返回要在该页面显示的片段@Overridepublic Fragment getItem(int position){开关(位置){案例0:返回FragmentOne.newInstance(0);情况1:返回FragmentTwo.newInstance(1);默认:返回null;}}//返回顶部指示器的页面标题@Override公共CharSequence getPageTitle(int position){字符串tabHeaderTitle =";开关(位置){案例0:tabHeaderTitle = UC.getString(R.string.waybill_register_package_owner);休息;情况1:tabHeaderTitle = UC.getString(R.string.create_new_waybill);休息;}返回tabHeaderTitle;}}@Overridepublic void onAttach(活动活动){myContext =(FragmentActivity)活动;super.onAttach(活动);}@Override公共无效onResume(){super.onResume();}} 

在第一次打开 FragmentMainView() MainActivity 片段上的 FragmentMainView()到ViewPager时,它可以正常工作并显示,但是在打开< MainActivity 中的code> FragmentAddNewWayBill()并再次切换到viewPager上的 FragmentMainView()片段不显示,我必须关闭应用程序并再次切换以显示该内容.有什么问题吗?

解决方案

在使用嵌套片段时,必须使用 getChildFragmentManager()而不是 myContext.getSupportFragmentManager().

in my application i have one Activity and that have some fragments and i can switch between fragments without any problem. one of this fragments have ViewPager with some other fragments, after switch between parent fragments abd back to nested fragment with viewPager, nested fragments dont show and i must be close application and run again to show that.

Main Activity:

public void updateFragment(int selectedItem) {
    mFragment = null;
    fts = getSupportFragmentManager().beginTransaction();
    switch (selectedItem) {
        case 0:
            mFragment = new FragmentMainView();
            break;
        case 1:
            mFragment = new FragmentAddNewWayBill();
            break;
    }
    fts.replace(R.id.mainViewFragments, mFragment, "0");
    fts.commit();
    mDrawerState = false;
}

in this code i can switch between fragments. FragmentMainView() have ViewPager with some defined fragments.

public class FragmentMainView extends Fragment {
    private FragmentActivity myContext;
    private ViewPager vpPager;
    private FragmentManager fragManager;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_main_view, container, false);

        G.currentActivity = FragmentMainView.this.getActivity();
        fragManager = myContext.getSupportFragmentManager();
        vpPager = (ViewPager) view.findViewById(R.id.vpPager);
        MyPagerAdapter adapterViewPager = new MyPagerAdapter(fragManager);
        vpPager.setAdapter(adapterViewPager);

        return view;
    }

    public static class MyPagerAdapter extends FragmentPagerAdapter {
        private static int NUM_ITEMS = 2;

        public MyPagerAdapter(FragmentManager fragmentManager) {
            super(fragmentManager);
        }

        // Returns total number of pages
        @Override
        public int getCount() {
            return NUM_ITEMS;
        }

        // Returns the fragment to display for that page
        @Override
        public Fragment getItem(int position) {
            switch (position) {
                case 0:
                    return FragmentOne.newInstance(0);
                case 1:
                    return FragmentTwo.newInstance(1);
                default:
                    return null;
            }
        }

        // Returns the page title for the top indicator
        @Override
        public CharSequence getPageTitle(int position) {
            String tabHeaderTitle = "";
            switch (position) {
                case 0:
                    tabHeaderTitle = UC.getString(R.string.waybill_register_package_owner);
                    break;
                case 1:
                    tabHeaderTitle = UC.getString(R.string.create_new_waybill);
                    break;
            }
            return tabHeaderTitle;
        }
    }
    @Override
    public void onAttach(Activity activity) {
        myContext=(FragmentActivity) activity;
        super.onAttach(activity);
    }

    @Override
    public void onResume() {
        super.onResume();
    }
}

in first switch on FragmentMainView() in MainActivity fragments on FragmentMainView() into ViewPager work correctly and show, but after switch on FragmentAddNewWayBill() in MainActivity and switch again to FragmentMainView() fragments on viewPager dont show and i must be close application and switch again to show that. whats problem?

解决方案

You have to use getChildFragmentManager() instead of myContext.getSupportFragmentManager() when using nested fragments.

这篇关于在Activity的Fragments之间切换后,Android嵌套的ViewPager的Fragments不显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆