在实例化 TabLayout 对象时,需要将其关联到 ViewPager 对象。如果 ViewPager 对象未设置 Adapter 或 Adapter 中没有数据,则会抛出 TabLayout 中的 NullPointerException 异常。
以下是一个设置 TabLayout 和 ViewPager 的示例代码:
TabLayout tabLayout = findViewById(R.id.tab_layout);
ViewPager viewPager = findViewById(R.id.view_pager);
// 通过 FragmentPagerAdapter 在 ViewPager 中设置页面
FragmentPagerAdapter adapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
// 根据位置返回对应的 Fragment
switch (position) {
case 0:
return new Fragment1();
case 1:
return new Fragment2();
default:
return null;
}
}
@Override
public int getCount() {
return 2; // 设置 ViewPager 包含的页面数量
}
};
// 将 Adapter 设置到 ViewPager 中
viewPager.setAdapter(adapter);
// 将 TabLayout 与 ViewPager 关联
tabLayout.setupWithViewPager(viewPager);
以上代码中,ViewPager 中包含了两个 Fragment,需要根据实际情况调整页面数量。
如果在 TabLayout 中添加了 Tab,但是没有设置关联的 ViewPager,也会抛出相应的异常。因此,在执行以下代码之前,要确保已经使用 setupWithViewPager()
方法将 TabLayout 和 ViewPager 进行关联:
tabLayout.addTab(tabLayout.newTab().setText("Tab 1"));
tabLayout.addTab(tabLayout.newTab().setText("Tab 2"));