码迷,mamicode.com
首页 > 移动开发 > 详细

Android——碎片事务调用失败

时间:2017-10-18 12:31:38      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:oid   根据   页面   解决方法   因此   响应   对象   支付   get   

    遇到一个情况:

    在一个定时器中,每秒发起一次网络请求查询订单支付状态,如果支付成功,则在response中发出一条信息;

    handler中收到信息,则控制碎片切换。

 

    结果遇到了一个错误:就是碎片切换事务报错,存在 空对象调用beginTransaction() 。

    原因:因为定时器每秒发出请求,上一秒发出的网络请求的响应还没回来,下一秒又发出;结果上一个请求的响应到达后,控制了碎片切换,此时碎片对象已经被替换(但未被销毁),而页面切换后第二个网络请求的响应又回来了,所以被替换掉的碎片仍然根据响应结果发出信息,handler中响应信息控制碎片切换,而此时该碎片并不在任何一个activity中,因此也就无法通过 getFragmentManager() 获得碎片管理器,因此此时  getFragmentManager().beginTransaction()  就会报错。

 

    解决方法:控制网络请求发出的频率

    在定时器中,增加一个判断条件,每隔5秒(自己定,足够长即可),发出一次网络请求。

Android——碎片事务调用失败

标签:oid   根据   页面   解决方法   因此   响应   对象   支付   get   

原文地址:http://www.cnblogs.com/ygj0930/p/7685908.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!