动态设置FragmentActivity+ViewPager+FragmentPagerAdapter结构中的fragment

在开发视频播放应用时,需根据用户选择动态展示不同个数的fragment,使用ViewPager的setAdapter动态设置FragmentPagerAdapter切换不起作用,设置后不走adapter的getItem()回调,调用notifyDataSetChanged()也无法解决,最后只能将原来的fragment一一remove掉。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在写一个视频播放应用时,需要根据用户的选择,动态展示不同(个数)的fragment,自然就想到了使用ViewPager的setAdapter动态设置FragmentPagerAdapter来切换, 结果发现不起作用,设置完后不走adapter的getItem()回调,要知道,新的fragment是在这里new出的。尝试调用mPagerAdapter.notifyDataSetChanged(),问题依然。

没找到其他好的方法,只好把原来的frament一一remove掉:

        private List<Fragment> mFragmentInstanceList; 
        FragmentVideoList fragment =  FragmentVideoList.newInstance();  
        mFragmentInstanceList.add(fragment);  //保存存量的fragment        
        ......
        
        if (mViewPager.getAdapter() != null) {
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            for(Fragment fragment:mFragmentInstanceList){
                ft.remove(fragment);  //remove所有的fragment
            }
            ft.commit();
        }
        
        //重写构建adapter
        mPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
        mViewPager.setAdapter(mPagerAdapter); 
        mTabPageIndicator.notifyDataSetChanged();


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值