Fragment Tabs inside Fragment

后端 未结 2 635
你的背包
你的背包 2020-12-23 02:16

I have in my Main Activity an Action bar navigation using tabs using Fragments (with Material Design), as below which works well, but now I wish to have Tab navigation withi

2条回答
  •  轮回少年
    2020-12-23 02:53

    See below answer that I achieved with using fragment tabs inside fragment tabs that are in my MainActivity

    Inside my fragment using getChildFragmentManager()

    public class FixturesTabs extends Fragment {
    
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
      }
    
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    
        View view = inflater.inflate(R.layout.fixtures_new_tabs,container, false);
        // Setting ViewPager for each Tabs
        ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewpager);
        setupViewPager(viewPager);
        // Set Tabs inside Toolbar
        TabLayout tabs = (TabLayout) view.findViewById(R.id.result_tabs);
        tabs.setupWithViewPager(viewPager);
    
    
        return view;
    
    }
    
    
    // Add Fragments to Tabs
    private void setupViewPager(ViewPager viewPager) {
    
    
        Adapter adapter = new Adapter(getChildFragmentManager());
        adapter.addFragment(new TodaysFixturesFragment(), "Today");
        adapter.addFragment(new WeekFixturesFragment(), "Week");
        adapter.addFragment(new MonthFixturesFragment(), "Month");
        adapter.addFragment(new AllFixturesFragment(), "Month");
        adapter.addFragment(new MyTeamsFixturesFragment(), "My Teams");
        viewPager.setAdapter(adapter);
    
    
    
    }
    
    static class Adapter extends FragmentPagerAdapter {
        private final List mFragmentList = new ArrayList<>();
        private final List mFragmentTitleList = new ArrayList<>();
    
        public Adapter(FragmentManager manager) {
            super(manager);
        }
    
        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }
    
        @Override
        public int getCount() {
            return mFragmentList.size();
        }
    
        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }
    
        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }
    
    
    
    }
    

    And my XML named "fixtures_new_tabs.xml" to match the inflated layout

    
    
    
    
    
    
        
    
            
        
    
        
    
    
    
    
    

    Hope this helps or points others in the direction for their solution..

    P.S. If you get a white screen after implementing this, you might have added the same parent fragment to it's child fragment.

提交回复
热议问题