Fragment使用容易忽视的问题

这两天在开发过程中遇到一个网络访问时的问题,

问题是这样的:

我的一个FragmentActivity中加载了几个Fragment,每个Fragment中的OnResume方法中都进行了网络请求,当然,我的网络工具使用了单例模式,在每个Fragment中实现了网络工具的监听接口,这时候我从这个Activity跳转到另一个Activity后又回到这个Activity时,数据进行了刷新,可是却没有达到我想要的效果。。。。。。。

分析

想呀想呀。。。。。。还是不知道问题出在哪里。。。代码看了又看。。。还是没找到结果,最后调试一看,发现Fragment中的网络请求根本没有监听到,后面仔细一想,这是因为有多个Fragment先后给网络工具设置了监听接口的原因啊(单例模式),当Activity 从不可见到可见时执行了OnResume()方法,这时每一个Fragment也都执行了各自的OnResume,网络工具的监听就被进行了几次设置,从而没有达到我们想要的效果。。。

解决

这下可怎么是好啊,。。。。。想啊想。。。想到了下面几个办法:

1.每个Fragment中自己new 网络工具。。。。。(可以是可以,但显得浪费了很多资源)

2.让Fragment中的OnResume中的网络请求在Fragment可见的时候执行。。。。(哈哈哈,问题解决了)


我采用了第二种办法。。。。


今天突然看到之前遇到的一个问题,记录下来

并且添加hide(),add(),方法之后,需要commit(),来实现两个Fragment跳转的时候,这种情形下参数需要进行系统保存,但是这个时候你已经实现了跳转,系统参数却没有保存。此时就会报异常。

分析原因:你并不需要系统保存的参数,只要你自己设置的参数能够传递过去,在另外一个Fragment里能够顺利接受就行了,现在android里提供了另外一种形式的提交方式commitAllowingStateLoss(),从名字上就能看出,这种提交是允许状态值丢失的。到此问题得到完美解决,值的传递是你自己控制的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值