首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

StartActivityForResult() 跟setResult() 方法获取不到result 的BUG

2013-10-24 
StartActivityForResult() 和setResult() 方法获取不到result 的BUGsetResult() 这个方法需要在 finish()

StartActivityForResult() 和setResult() 方法获取不到result 的BUG

setResult() 这个方法需要在 finish() 方法 调用前  ,才可以 set  成功 


activity返回result是在被finish的时候,也就是说调用setResult()方法必须在finish()之前。
那么如果在如下方法中调用setResult()也有可能不会返回成功: onPause(), onStop(), onDestroy(),
因为这些方法调用不一定是在finish之前的,当然在onCreate()就调用setResult肯定是在finish之前的

按BACK键从一个Activity退出来的,一按BACK,android就会自动调用Activity的finish()方法,然后设置resultCode为RESULT_CANCELED,也就不会返回任何数据了 .
解决方法就是在Activity里面捕获按BACK的事件,捕获到之后先setResult,然后自己来调用finish,就搞定了……把BACK事件直接自己给吞了


如果 测试 可以把setResult()方法 可以放在一个点击事件中  我是放在了onDestroy()方法里面  ,可以调用 到 StartActivityForResult()方法 ,但是获取到的ResultCode = 0


把setResutl()方法放到 一个返回按钮的点击事件中,一切正常了;



更多 基础跳转 参考资料  http://www.cnblogs.com/lijunamneg/archive/2013/02/05/2892616.html

热点排行