码迷,mamicode.com
首页 > 其他好文 > 详细

关于startActivityForResult()方法后Activity直接退出的问题原因和解决办法

时间:2015-05-14 18:51:22      阅读:778      评论:0      收藏:0      [点我收藏+]

标签:

现象:

今天在做调用相机拍照然后进行一些裁剪后显示的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直接退出的问题原因和解决办法

标签:

原文地址:http://blog.csdn.net/u013224148/article/details/45722257

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!