viewpager fragment data refresh

在处理一个复杂页面的刷新需求时,遇到ViewPager中的Fragment数据错乱的问题。即使多次刷新,错误数据也无法更新。最终发现,问题在于使用了FragmentPagerAdapter而不是FragmentStatePagerAdapter。将适配器的基类改为FragmentStatePagerAdapter后,解决了数据缓存导致的错误,确保了数据在刷新时能正确更新。

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

碰到一个需求,复杂页面,需要刷新的时候,viewpager的fragment会有旧数据的缓存,导致数据错乱,必须退出app,重新加载,数据才恢复正确。刷新的时候,不管刷新多少次,错误的数据,始终无法更新,这个时候,找了一天,总算找到问题就,就是把适配器的继承的类改一下就行。

package com.example.rcui;

import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;

import java.util.List;

// FragmentPagerAdapter 改为 FragmentStatePagerAdapter
public class MyPagerAdapter extends FragmentStatePagerAdapter{
    private List<Fragment> mFragments;

    public MyPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
        super(fm);
        this.mFragments = fragments;
    }

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

    @Override
    public CharSequence getPageTitle(int position) {
        return String.valueOf(position);
    }

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

    @Override
    public int getItemPosition(@NonNull Object object) {
        return PagerAdapter.POSITION_NONE;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值