最近碰到这个问题, 然后Google一番. 于是记录下来.
去翻Android Developers网站的Reference, 在Activity的介绍中有段文字如下:
意思是当Activity的启动模式是singleTask时,这个Activity不会运行在该task任务栈中.并且会马上收到一个cancel result的信号.这就是原因了.比如Activity A 使用startActivityForResult()跳转到Activity B中,同时A的启动模式是SingleTask, 这时一调用startActivityForResult()去跳转B, A中的onActivityResult()方法会马上收到一个RESULT_CANCEL(值为0)的resultCode.这样RESULT_OK是无法被响应的.
解决方法: 直接将Activity A的启动模式去掉,使用默认的标准模式即可.如果不想多次创建A,可以将A的数据缓存下来,下次恢复A的时候再用,或者每次在A 回退到上层的事件中将A finish掉就ok.