Activity更新Fragment

本文介绍了在Android中如何在Activity中更新Fragment,包括使用TabLayout+ViewPager的方式,以及两种不同的适配器实现方法:FragmentStatePagerAdapter和清除缓存的Fragment添加方式。

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

Activity更新Fragment 

(TabLayout ViewPager Fragment)


在activity里调用 

adapter.notifyDataSetChanged();

适配器的写法:

方法1:(适配器继承FragmentStatePagerAdapter)

public class CoursePagerAdapter extends FragmentStatePagerAdapter {
    private final List<Fragment> mFragments = new ArrayList<>();
    private final List<String> mFragmentTitles = new ArrayList<>();
    FragmentManager fm;

    public CoursePagerAdapter(FragmentManager fm) {
        super(fm);
        this.fm = fm;
    }


    public void addFragment(Fragment fragment, String title) {
        mFragments.add(fragment);
        mFragmentTitles.add(title);
    }

    public void clearFragment() {
        mFragments.clear();
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        super.destroyItem(container, position, object);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragments.get(position);
    }

    @Override
    public int getCount() {
        return mFragments.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitles.get(position);
    }

    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }

}


方法2:(添加清除缓存的Fragment)

public class CoursePagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragments = new ArrayList<>();
    private final List<String> mFragmentTitles = new ArrayList<>();
    FragmentManager fm;

    public CoursePagerAdapter(FragmentManager fm) {
        super(fm);
        this.fm = fm;
    }


    public void addFragment(Fragment fragment, String title) {
        mFragments.add(fragment);
        mFragmentTitles.add(title);
    }

    public void clearFragment() {
        removeALlFragments();
        mFragments.clear();
    }

    private void removeALlFragments(){
        FragmentTransaction transaction = fm.beginTransaction();
        for (int i=0; i<mFragments.size(); i++){
            Fragment fg = mFragments.get(i);
            transaction.remove(fg);
        }
        transaction.commit();
        mFragments.clear();
    }
     @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        super.destroyItem(container, position, object);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragments.get(position);
    }

    @Override
    public int getCount() {
        return mFragments.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitles.get(position);
    }

    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }

}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值