Why it is not possible to use ViewPager within a Fragment? It actually is

后端 未结 4 1397
庸人自扰
庸人自扰 2020-12-02 08:34

There are information that it is impossible to use ViewPager within a Fragment in many sources like "The Busy Coders Guide for Android Develop

4条回答
  •  天涯浪人
    2020-12-02 09:19

    it is possible try to do this code and save view_pager_fragment.xml

    
    
        
    
    
    
    
    

    ViewPagerFragment

    ViewPager viewPager;
    TabLayout tabLayout;
    
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.tracks, container, false);
    
        viewPager = (ViewPager) view.findViewById(R.id.viewpager);
        tabLayout = (TabLayout) view.findViewById(R.id.tab);
    
        return view;
    }
    
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    
        setupViewPager(viewPager);
        tabLayout.setupWithViewPager(viewPager);
    
        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
    
            }
    
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
    
            }
    
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
    
            }
        });
    }
    
    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getChildFragmentManager());``
    
        viewPagerAdapter.addFragment(new FirstFragment(), "First");
        viewPagerAdapter.addFragment(new SecoundFragment(), "Secound");
        viewPagerAdapter.addFragment(new LoginFragment(), "Login");
    
        viewPager.setAdapter(viewPagerAdapter);
    }
    
    private class ViewPagerAdapter extends FragmentPagerAdapter {
    
        List fragmentList = new ArrayList<>();
        List fragmentTitles = new ArrayList<>();
    
        public ViewPagerAdapter(FragmentManager fragmentManager) {
            super(fragmentManager);
        }
    
        @Override
        public Fragment getItem(int position) {
            return fragmentList.get(position);
        }
    
        @Override
        public int getCount() {
            return fragmentList.size();
        }
    
        @Override
        public CharSequence getPageTitle(int position) {
            return fragmentTitles.get(position);
        }
    
        public void addFragment(Fragment fragment, String name) {
            fragmentList.add(fragment);
            fragmentTitles.add(name);
        }
    }
    

提交回复
热议问题