【发布时间】:2015-04-28 14:15:40
【问题描述】:
我没有使用ViewPager,我调用任何Fragment 事务的唯一位置是单击活动布局中导航栏上的按钮。
当我太快地切换到片段时(比如来回切换),我得到这个异常:
java.lang.IllegalStateException: 无活动
似乎是当我点击切换另一个Fragment 而第一个尚未完全加载完成时。我正在使用FragmentActivity。
任何人都可以对此有所了解吗?
我的代码切换Fragments:
fragmentManager.beginTransaction()
.replace(R.id.container, old,
fragment.getClass().getSimpleName())
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit();
编辑: 取出过渡解决了这个问题,但我想知道是否有办法通过适当的过渡来做到这一点。我的理论是,过渡会延迟片段生命周期,并在启动另一个片段事务时导致活动为空。
【问题讨论】:
-
@shkschneider 我已经调查过了。显然这是新支持库的一个错误,但我在这里没有使用子片段管理器。这只是一个基本的应用程序,有 4 个屏幕,可通过 Activity 中的按钮访问。
-
我认为您的问题与获取上下文有关 onAttach,您是否尝试过稍后获取上下文?例如onActivityCreated
-
我从片段的 onAttach 回调中获取我的活动引用。这发生在甚至添加片段之前。异常由片段管理器抛出。
-
@sihrc 如果这是一个支持库错误,那就不好了。有任何链接可以支持您的假设吗?