我没有使用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();
编辑: 取消过渡解决了这个问题,但我想知道是否有办法在过渡到位的情况下做到这一点。我的理论是转换会延迟片段生命周期,并在启动另一个片段事务时导致活动为空。
答案 0 :(得分:4)
我今天遇到了同样的问题。结果是我正在缓存我的片段(这是完全有效的),但我一直在删除/添加它(当仍然动画)
在致电old.isRemoving()
.replace(R.id.container, old)
true
表示它仍在使用中并重新添加它会触发问题。在这种情况下,您应该创建一个新的片段实例。
我的猜测是我正在尝试重新添加一个片段,同时它仍在动画删除它,因此需要两个片段实例。