现象:
今天在做调用相机拍照然后进行一些裁剪后显示的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被销毁了。
在网上经过一番查找,发现有哥们说在手机开发人员选项里面有这么一项“不保留活动”被勾上了, 一看还真是。 把那个勾去掉一切又恢复正常了。
这个是百度到的
时间: 2024-10-13 12:58:52