Android Fragment使用hide和show方法的问题

Fragment的强大是毋庸置疑的,现在是越来越喜欢使用它了,但是使用中我也是头疼了好一阵,各种小bug层出,记录一下:

   我们使用Fragment去填充布局的时候,是有两种方法可以实现的:一种是使用fragment的管理器的replace()方法,另一种就是使用hide()和show()方法对Fragment显示隐藏。

很明显replace()方法就是不断的替换覆盖当前布局,每一次的replace()都会重新实例化一个Fragment,这种方法适合所销毁的Fragment不需要我们保存状态,每次都需要重新加载的,但是有时是不想不断的去实例化Fragment的这样也是比较耗时的(尤其是在网络较差时),而且很多时候业务上要求也不是要实时刷新数据的,这时候就要使用这hide和收尾方法了,不去每次都new一个Fragment。 之前我有写过hide和show方法(http://blog.csdn.net/my_jack/article/details/52934447),可以去看一下。

    当我使用hide和show方法的时候遇见了问题了,当我的三个Fragment A , B , C都实例化之后,我在B界面显示的时候,点击B界面会执行C界面的点击事件。当时真的是下了我这一下,好诡异啊。不断测试一下,发现当B界面没有了点击事件设置时会发生这种点击穿透布局的事件。应该是宿主保存了各个Fragment的状态了,所以在需要的Fragment中重写一下onSaveInstaceState方法就可以了:

@Override
protected void onSaveInstanceState(Bundle outState) {
//阻止activity保存fragment的状态
//super.onSaveInstanceState(outState);
}

原文链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值