关于startActivityForResult()方法后Activity直接退出的问题原因和解决办法
2015-05-14 16:04
597 查看
现象:
今天在做调用相机拍照然后进行一些裁剪后显示的Demo。大题思路就是这样private final View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { if(v==btnPhone){ //从相册获取图片 Intent intent = new Intent(Intent.ACTION_PICK, null); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_UNSPECIFIED); startActivityForResult(intent, PHOTO_ZOOM); }else if(v==btnTakePicture){ //从拍照获取图片 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile( new File(Environment .getExternalStorageDirectory(),"temp.jpg"))); startActivityForResult(intent, PHOTO_GRAPH); } } };
直接根据用户 的选择调用安卓本身的一些功能就好了
通过startActivityForResult()方法在处理完成后回调到我们这个activity就好了 很简单
但是却遇到了一个问题 就是处理完成后activity直接退出了 通过Log发现startActivityForResult根本没有被执行到
这是怎么回事呢?
原因:
假设有activity1和activity2, activity1调用activity2
1. activity1是SingleTask模式 也就是不在前台的时候就自动被销毁了自然不能接收到activity2的数据 也就呈现出了直接退出的现象
解决方法:改成标准模式
2. setResult的第一个参数对应上面onActivityResult的第二个参数,注意别把onActivityResult的第一个参数与第二个参数搞混淆了,一个是请求标记,一个是返回标记。
解决办法:分清楚就好了 没啥好说的
3. 最近在华为的手机上面发现Activity调用startActivityForResult后返回结果时,调用的Activity都会被重新创建,也就是Activity被销毁了。
在网上经过一番查找,发现有哥们说在手机开发人员选项里面有这么一项“不保留活动”被勾上了, 一看还真是。 把那个勾去掉一切又恢复正常了。
这个是百度到的
相关文章推荐
- 关于调用startActivityForResult()方法后Activity直接退出的问题原因和解决办法
- Android开发中使用startActivityForResult()方法从Activity A跳转Activity B出现B退出时A也同时退出的解决办法
- startActivityForResult方法解决Activity之间数据的保存问题
- Tabhost中子Activity使用startActivityForResult后获取不到回调值问题的解决办法
- Tabhost中子Activity使用startActivityForResult后获取不到回调值问题的解决办法
- 移动开发:Tabhost中子Activity使用startActivityForResult后获取不到回调值问题的解决办法
- Tabhost中子Activity使用startActivityForResult后获取不到回调值问题的解决办法
- 关于ActivityA中的FragmentA 启动 ActivityB,FragmentA的startActivityForResult回调的问题
- 关于Fragment里面调取startActivityForResult 调取onActivityResult不执行原因
- 关于在Fragment中使用startActivityForResult();方法后onActivityResult()未被调用的解决方案
- 一个关于startActivityForResult的小问题
- 关于Activity使用startActivityForResult()跳转后,onActivityResult()无法响应RESULT_OK的原因
- Android关于又返回的跳转 startActivityForResult()方法
- 关于startActivityForResult()方法的使用
- 基于startActivityForResult方法处理两个Activity之间数据传递问题
- 调用startActivityForResult,onActivityResult无响应的解决办法
- Fragment与宿主Activity都调用startActivityForResult,onActivityResult不执行解决办法
- Android startActivityForResult遭遇到onActivityResult方法不响应的问题
- 在Viewpager的子Activity中startActivityForResult调用其他Activity时候遭遇到onActivityResult方法不响应的问题.
- fragment中onActivityResult无法返回和在startActivityForResult调用后立即调用解决办法