android调试bug集锦 onActivityResult立即返回,并且被CANCEL
2016-02-15 11:15
453 查看
症状:
在使用startActivityForResult调用照相机或者选择图片的时候,总是onActivityResult立马返回,resultCode=0 CANCEL。
因为是在fragment里面使用startActivityForResult有问题,所以开始以为是因为fragment导致的问题,各种调试都无法解决问题。
解决方法:
后来突然看到manifests里面看到activity被配置为singleInstance,突然就想到,可能是这个导致的问题,去manifests里面将其改为
startActivityForResult可以正常使用。
分析原因:
singleInstance状态下,系统加载任何新的activity的时候都会将新的activity移到新的栈上,保持设置为singleInstance的activity所在栈里面只有该activity。因此当设置为singleInstance,使用 startActivityForResult 后,系统将新启动的activity移到新的栈上面,原来的栈上面原activity任然保持在栈顶,所以返回的resultCode就是CANCEL。因为其他栈上的activity不能将数据返回到该栈顶上的activity。
作为替换可以将singleInstance换位singleTop以解决该问题。
在使用startActivityForResult调用照相机或者选择图片的时候,总是onActivityResult立马返回,resultCode=0 CANCEL。
startActivityForResult(intent,IMAGE_PICK_REQUEST);
因为是在fragment里面使用startActivityForResult有问题,所以开始以为是因为fragment导致的问题,各种调试都无法解决问题。
解决方法:
后来突然看到manifests里面看到activity被配置为singleInstance,突然就想到,可能是这个导致的问题,去manifests里面将其改为
android:launchMode="singleTop"
startActivityForResult可以正常使用。
分析原因:
singleInstance状态下,系统加载任何新的activity的时候都会将新的activity移到新的栈上,保持设置为singleInstance的activity所在栈里面只有该activity。因此当设置为singleInstance,使用 startActivityForResult 后,系统将新启动的activity移到新的栈上面,原来的栈上面原activity任然保持在栈顶,所以返回的resultCode就是CANCEL。因为其他栈上的activity不能将数据返回到该栈顶上的activity。
作为替换可以将singleInstance换位singleTop以解决该问题。
相关文章推荐
- Android手势滑动实现ImageView缩放图片大小
- android apk 签名信息 相关
- Android AlertDialog对话框
- Android drawable文件夹下部分文件介绍
- Android开发之资源文件用法实例总结
- Android手势控制实现缩放、移动图片
- Android 解决65535的限制 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚
- Android 性能优化 TraceView工具的使用
- 【收集】Android开源库
- Android实现手势滑动多点触摸放大缩小图片效果
- android测试工具小总结
- 给 Android 开发者的 RxJava 详解
- AndroidAnnotations
- dex文件结构
- Android Studio开发技巧集锦
- Android Toast消息提示框
- 如何修改android工程的包名?
- 使用Android Studio 开发NDK项目生成.h文件方法
- Context和Activity互相转换
- android gravity属性 和 weight属性