android滞留广播,关于Fragment的点击切换数据滞留问题

在使用TabLayout+Fragment的场景中遇到切换Fragment时数据重复显示的bug。通过分析,发现每次切换时都会重新获取数据,由于list集合是全局的,导致数据积累。为解决此问题,引入了一个boolean变量hidden和isfirsthidden,当隐藏状态改变时,在onHiddenChanged方法中判断如果list数据超过初始大小则清空list,并在onResume中重新加载数据。但这样的解决方案导致数据无法正常显示。现在需要进一步调整代码逻辑以确保数据正确且只显示一次。

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

场景再现:当我使用tablayout + fragment 切换不同的fragment时,出现了数据重复显示的问题;

思考逻辑:

- 每次切换fragment都会重新获取数据,但是list集合是全局的,多切换两次,list数据就会变多,所以需要加判断,当list集合的数据超过第一次获取下来list集合的数据的时候就clear,之后每次进入fragment的时候initview都会执行,所以也会请求数据,这时候我们添加一个boolean来判断;

15:56:092020-04-16

解决方案:

if (!hidden) {

if (isfirsthidden) {

size = complaintlist.size();

isfirsthidden = false;

}

if (complaintlist.size() > size) {

complaintlist.clear();

}

showrv();

}

- 这样写每次重新进去之后又不显示数据了

1. 定义变量 private boolean hidden;

2. this.hidden = hidden;

3. 实现onresume()方法重新获取数据;

``` @override

public void onhiddenchanged(boolean hidden) {

super.onhiddenchanged(hidden);

this.hidden = hidden;

if (!hidden) {

if (isfirsthidden) {

size = complaintlist.size();

isfirsthidden = false;

}

if (complaintlist.size() > size) {

complaintlist.clear();

}

showrv();

}

}

@override

public void onresume() {

super.onresume();

if (!hidden) {

showrv();

}

}

大功告成;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值