关于Fragment的hide和show以及重启后重叠的问题

今天迫不及待的来写点文字,表达我的想法。

1:遇到的第一个事

首先:在第一次新建出来fragment的时候,如果不是主界面直接需要显示,必须要Hide掉,否则就把界面占住了,不会显示下面的界面。

fAd=new GuideFragment();

fragmentTransaction.add(android.R.id.content,fAd);//添加广告fragment
fragmentTransaction.hide(fAd);

2:第二:使用fragment都使用add 的方式添加,是现在推荐的,用hide    show来显示和隐藏,replace是不需要用,就用这种方式吧、



3:第三:这是最坑爹的一个,在hide 和  show的过程中,我一直在调onResume和onPause,以为和Activity一样,在每次重新show 和hide显示的时候会走这个生命周期,

弄了很久,放弃了,去测试这个周期,才发现我错了。。。。

原因:原来在点击物理按键来进行返回退出程序,相当于是退出了依附的activity的时候才走了onPause,在重新进这个actiivty的时候才会走onResume,所以在hide和show的时候并没有这两个周期的事情,是不是恍然大悟了呢?

@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);

原来在hide和show的时候,至始至终只会有这个方法,和生命周期里我说的那俩家伙无关,所以只需要在这个函数里去做调整就可以了。


4:第四:在使用之后,又出现了一个问题,那就是在我开启一个新界面的时候,返回到本界面,一个本应该是hide的fragment被显示了出来,还不能操作上面的东西,我调用hide也不能隐藏它,就像一个bug似的,因为不知道怎么解决,又不是每次都出现。

解决:后面发现这个问题:其实是由Activity被回收后重启所导致的Fragment重复创建和重叠的问题。 
在Activity onCreate()中添加Fragment的时候一定不要忘了检查一下savedInstanceState;

if (savedInstanceState== null ){ fragmentManager.findFragmentByTag( "标签" );} else {fragment = new Fragment(); fragmentTransaction.add(R.id. `` , fragment, "标签" );}

异常退出activity的时候会保存内部的fragment,所以有了这个问题,采用这种方式这样就能避免这个问题了,防止fragment被重建重叠。



希望我的问题,让大家知道会有点用。



513210053,欢迎大家来交流。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值