在不使用片段的情况下,可以使用选项卡布局的解决方法如下:
public class MainActivity extends AppCompatActivity {
private ViewPager viewPager;
private TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = findViewById(R.id.view_pager);
tabLayout = findViewById(R.id.tab_layout);
// 创建适配器
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager());
// 添加页面到适配器
adapter.addFragment(new Fragment1(), "选项卡1");
adapter.addFragment(new Fragment2(), "选项卡2");
adapter.addFragment(new Fragment3(), "选项卡3");
// 设置适配器
viewPager.setAdapter(adapter);
// 绑定TabLayout和ViewPager
tabLayout.setupWithViewPager(viewPager);
}
// 定义适配器
private class PagerAdapter extends FragmentPagerAdapter {
private List fragments = new ArrayList<>();
private List fragmentTitles = new ArrayList<>();
public PagerAdapter(FragmentManager fm) {
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
}
public void addFragment(Fragment fragment, String title) {
fragments.add(fragment);
fragmentTitles.add(title);
}
@NonNull
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return fragmentTitles.get(position);
}
}
}
public class Fragment1 extends Fragment {
public Fragment1() {}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment1, container, false);
// 设置选项卡1的布局和逻辑
return view;
}
}
public class Fragment2 extends Fragment {
public Fragment2() {}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment2, container, false);
// 设置选项卡2的布局和逻辑
return view;
}
}
public class Fragment3 extends Fragment {
public Fragment3() {}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment3, container, false);
// 设置选项卡3的布局和逻辑
return view;
}
}
这样,就可以实现在不使用片段的情况下使用选项卡布局。在适配器中添加需要显示的Fragment,并在每个Fragment中设置对应的布局和逻辑。注意在ViewPager的适配器中使用FragmentPagerAdapter
,并在适配器的构造函数中设置BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
来获得最佳性能。