ViewPager.setCurrentItem()出现Fragment already active异常

       公司一项目,从一个activity进入另一个activity并快速切换viewpager的时候,有一定几率出现   E/AndroidRuntime(12408): Caused by: java.lang.IllegalStateException: Fragment already active,app直接挂掉,说是在ViewPager.setCurrentItem()处出现错误。

      我在网上看了半天,也没有解决,看到了几篇关于Fragment already active异常的文章,放上链接,你们也可以参考一下:

      http://stackoverflow.com/questions/10364478/got-exception-fragment-already-active/15084683

       http://blog.csdn.net/gaojiaxingde/article/details/39002501

       由于我的项目过大,不太好改动,我就研究了好一会儿,我就添加了下面的代码:

<span style="font-size:18px;">                                     try {
                		      mViewPager.setCurrentItem(mCurrentIndex);
					} catch (Exception e) {
						e.printStackTrace();
						WLog.e(TAG, "Fragment already active");
					}</span>

       结果这样app就不会ANR了,打印的出来的异常为 E/FragmentManager(6610): Fragment FragmentChannelNewsList{430903a8} is not currently in the FragmentManager ,我想应该是viewpager切换速度太快了,导致Fragment还没有初始化完成,这时候就ANR,贴出来大家一起看看,Fragment already active异常还没有看到很好的解决办法,大家有好的办法出来讨论一下,共同进步!!!

     经过我后来查看代码,发现是Activity退出来的时候没有来得及clear掉存储Fragment的HashMap造成的,只要我们每次进入Activity在setContentView之前clear一下这个HashMap就可以了!!!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值