You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tab Layout不显示Fragment问题:父Fragment内嵌TabLayout时子Fragment不可见

问题原因

你的子Fragment无法显示是FragmentPagerAdapter的getCount()方法返回值错误导致的,同时还存在其他几个适配逻辑问题:

  • FragmentAdapter的getCount()方法硬编码返回0,ViewPager会认为没有需要加载的Fragment,自然不会渲染任何内容
  • 构造FragmentAdapter时混淆了第二个参数的含义:FragmentPagerAdapter构造的第二个参数是行为模式常量(比如BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT),你错误把Tab数量传进去赋值给了tabcount
  • 切换Tab时不需要每次都调用notifyDataSetChanged(),会造成不必要的Fragment重建,影响性能

修复方案

1. 修复FragmentAdapter代码

public class FragmentAdapter extends FragmentPagerAdapter {
    int tabcount;
    // 构造方法修改:第二个参数传Tab数量,行为模式直接在父类构造传标准常量
    public FragmentAdapter(@NonNull @NotNull FragmentManager fm, int tabCount) {
        super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
        this.tabcount = tabCount;
    }

    @NonNull
    @NotNull
    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0: return new WatchingFragment();
            case 1: return new CompletedFragment();
            case 2: return new WantToWatchFragment();
            default: return new WatchingFragment(); // 不要返回null,避免崩溃
        }
    }

    @Override
    public int getCount() {
        return tabcount; // 返回实际Tab数量,不要返回0
    }
}

2. 优化NotificationsFragment的Tab切换逻辑

删除onTabSelected里多余的notifyDataSetChanged()调用:

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        vp.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {
    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {
    }
});

3. 补充WatchingFragment的空判断(可选,避免崩溃)

你当前直接把Intent拿到的animename添加到列表,如果跳转时没有传这个参数会添加null,建议增加判断:

String animename = intent.getStringExtra("nameanime");
if (animename != null && !animename.isEmpty()) {
    list.add(animename);
}

修改完成后重新运行即可正常显示子Fragment。


内容的提问来源于stack exchange,提问作者TheVishesh Vlog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:54:05