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

sih*_*hrc 5 android android-fragments

我没有使用ViewPager,并且是我唯一拨打任何电话的地方Fragment交易是单击活动布局中导航栏上的按钮。

当我太快地切换到片段(如来回)时,会出现以下异常:

java.lang.IllegalStateException:没有活动

似乎是当我单击切换另一个Fragment而第一个尚未完全完成加载时。我正在使用FragmentActivity

谁能对此有所了解?

我要切换Fragment的代码:

fragmentManager.beginTransaction()
    .replace(R.id.container, old,
        fragment.getClass().getSimpleName())
    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit();
Run Code Online (Sandbox Code Playgroud)

编辑:取出过渡解决了问题,但我想知道是否有一种方法可以实现过渡。我的理论是,过渡会延迟片段的生命周期,并在启动另一个片段事务时使活动为空。

gma*_*zzo 4

我今天遇到了同样的问题。原来我正在缓存我的片段(这是完全有效的),但我很快就删除/添加了它(当仍在动画时)

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

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

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