我有一个片段,基本上工作良好。在onResume方法中,当用户到达活动/片段时,我执行一个api调用以获取新的数据。
public void onResume(){
super.onResume();
//in pseudo
do async call
success callback
update ui
failure callback
update ui
}
这个大部分时间都很好用。但是,当用户在update ui方法完成之前导航回父活动时,我遇到了一个问题。更新ui只是设置一些文本视图。
例如。当用户导航到活动和片段时,将调用上面的onResume。用户立即返回父活动。异步调用和更新ui尚未完成,我得到:
致命异常:主进程:com.project.foobar,pid:4405 java.lang.IllegalStateException:片段MyDetailFragment{41EBB478}未附加到活动
这是在成功回调后在update ui方法中抛出的。我使用Square的改型来管理api调用。同样,这只是在update ui尚未完成时发生的。当我等它结束回去的时候,一切都很好。
有什么可能出了问题吗?
当您导航离开该片段时,可以中止异步操作,或者在尝试更新UI时,只需检查该片段是否仍然附加有isadded()
。如果它没有附加,就忽略结果,不要接触视图。
第一个选项可能是最正确的,但也是最难实现的。在我看来,第二个选项是非常好的,除非您在后台线程中进行一些非常繁重和长时间的运行。
代码如下:- 产品片段: 我不知道我错在哪里。我已经搜索了错误,甚至尝试了以下链接的解决方案: Fragment MyFragment not attached to activity 我在SO上提出问题,但没有得到响应/答案。可能有一个小错误、语法/格式问题或重复问题,但我的案例可能与其他人的不同。 因此,请提供帮助并作出答复。 谢谢。 --编辑-- 家庭活动: 致命异常:主进程:com.pis
如果有人能帮我摆脱困境,请告诉我。多谢了。
我的代码: 我添加了部分来模拟下载数据。中的代码是模拟使用。 当我在横向和纵向之间快速旋转屏幕时,我在代码处得到一个异常: java.lang.IllegalStateException:片段MyFragment{410F6060}未附加到活动 我认为这是因为在此期间创建了一个新的,并且在完成之前附加到了活动。中的代码调用未附加的。
这是我的碎片 drawable是ok的,也检查了,数据库项目,崩溃发生有时不是每次数据库更改
我正在创建一个使用FragmentStatePagerAdapter的ViewPager活动。但当我试图旋转我的手机时,它崩溃了,并出现错误“片段尚未附加”。 这是我的适配器: 在我的活动onCreate中,我调用了SalesPagingAdapter=new SalesPagingAdapter(PreMainActivitySales.this,getSupportFragmentManage
代码:-