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

来源:互联网 发布:java创建索引lucene 编辑:程序博客网 时间:2024/05/17 02:51

       公司一项目,从一个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就可以了!!!




0 0