过快地切换片段会导致:java.lang.IllegalStateException:无活动

时间:2015-04-28 14:15:40

标签: android android-fragments

我没有使用ViewPager,而且我调用任何Fragment次交易的唯一地方是点击我的活动布局中的导航栏上的按钮。

当我过快地切换到片段时(比如来回),我得到了这个例外:

  

java.lang.IllegalStateException:No activity

似乎是当我点击切换另一个Fragment而第一个没有完全加载时。我正在使用FragmentActivity

任何人都可以对此有所了解吗?

我的代码切换Fragment s:

fragmentManager.beginTransaction()
    .replace(R.id.container, old,
        fragment.getClass().getSimpleName())
    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit();

编辑: 取消过渡解决了这个问题,但我想知道是否有办法在过渡到位的情况下做到这一点。我的理论是转换会延迟片段生命周期,并在启动另一个片段事务时导致活动为空。

1 个答案:

答案 0 :(得分:4)

我今天遇到了同样的问题。结果是我正在缓存我的片段(这是完全有效的),但我一直在删除/添加它(当仍然动画)

在致电old.isRemoving()

之前,请尝试检查:.replace(R.id.container, old)

true表示它仍在使用中并重新添加它会触发问题。在这种情况下,您应该创建一个新的片段实例。

我的猜测是我正在尝试重新添加一个片段,同时它仍在动画删除它,因此需要两个片段实例。