在XML布局文件中,将ViewPager和TabLayout放在一个父布局中。
在Activity的onCreate方法中,初始化ViewPager和TabLayout,并与FragmentAdapter关联。
viewPager = findViewById(R.id.view_pager);
tabLayout = findViewById(R.id.tab_layout);
FragmentAdapter adapter = new FragmentAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
创建FragmentAdapter类,继承FragmentPagerAdapter,并实现getItem和getCount方法。getItem方法用于返回ViewPager中关联的Fragment,getCount方法用于返回Fragment的数量。
private class FragmentAdapter extends FragmentPagerAdapter {
private final String[] titles = {"Tab1", "Tab2", "Tab3"};
public FragmentAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new Fragment1();
case 1:
return new Fragment2();
case 2:
return new Fragment3();
default:
return null;
}
}
@Override
public int getCount() {
return titles.length;
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
}
创建三个Fragment,并设置布局和逻辑。
public class Fragment1 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_1, container, false); // 设置布局文件
return view;
}
}
public class Fragment2 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_2, container, false); // 设置布局文件
return view;
}
}
public class Fragment