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

现象:

今天在做调用相机拍照然后进行一些裁剪后显示的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

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

jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法

jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法 在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值,这时很有可能是因为你用的是ajax的异步调用async:true(默认情况),如: function ManageCommentText(text) { var result = text; $.ajax({ data: "get", url: &qu

qt designer启动后不显示界面问题的原因与解决办法

Qt 5.6.1无论是在vs里双击ui文件还是直接启动designer.exe都一直无法显示界面,但任务管理器中可以看到该进程是存在的.前几天还正常的,但昨天加了一块NVIDIA的显卡(机器自带核显),可能与此有关.幸好还可以通过QtCreator打开ui文件进行编辑. 找到了对应Qt bug但还是打开状态...地址如下:https://bugreports.qt.io/browse/QTBUG-53984 根据bug描述应该是在win10 64位系统并且是双显卡的情况下,Qt5WebEngin

Struts2中使用execAndWait后,在 Action中调用getXXX()方法报告java.lang.NullPointerException异常的原因和解决方法

使用 Struts2 编写页面,遇到一个要长时间运行的接口,因此增加了一个execAndWait ,结果在 Action 中调用 getContext()的时候报告异常 1 ActionContext context = ActionContext.getContext(); 2 ServletContext servletContext = (ServletContext) context.get(ServletActionContext.SERVLET_CONTEXT); //抛空指针异常

Launcher Activity在开机时重启两次解决办法

今天在看log的时候发现,Launcher activity会被onDestroy掉一次,然后再重启. 可能原因猜测: 1.横竖屏切换 2.MCC MNC等Configuration改变引起的 MCC(移动国家码)和 MNC(移动网络码) 由于当时的Launcher设置为强制横屏了,应该是不会引起重启的. 对于Configuration改变系统会发一个android.intent.action.CONFIGURATION_CHANGED的广播 于是就做了一个广播接收器去检测是不是由于Config

连接VPN后,本机不能上互联网的解决办法

连接VPN后,本机不能上互联网的解决办法 宽带拨号上了网,正常. 再创建个VPN连接到公司网络,连接正常,可以PING通公司的服务器. 再上网,上不去了! 断开VPN,上网正常,搜索引擎一搜,都说要改一个VPN网络的配置,位置: VPN连接-->属性--网络--IPV4--属性--高级 默认时,“在远程网络上使用默认网关”是勾选上的. 按网上的说法,要去掉这个勾.照办. 再连接VPN,还是不能上网. 细看上网提示,是DNS地址找不到.看来按网上所说的是路由不对的说法靠不住,问题在DNS. 于是还

U盘装系统后启动不了是什么原因如何解决

U盘装系统后启动不了是什么原因如何解决 用U盘启动盘制作工具,在PE 安装完系统重启时,就把U 盘拔了,结果就出现了operating system not found 这个提示,下面为大家介绍下具体的原因,有类似情况的朋友不要错过:或者就是显示启动出错 有些朋友用U盘启动盘制作工具制作后,在PE 安装完系统重启时,就把U 盘拔了,结果就出现了operating system not found 这个提示.这个是什么意思呢?下面我们就来解决这个问题. operating system not f

SQL Server 2005 安装后,没有Management Studio管理工具的解决办法

如果您在安装SQL Server 2005之前安装了Visual Studio .NET 2005或2008,并且在安装VS时选择了SQL Server 2005 Express,那么很不幸,SQL Server 2005安装后,您将找不到Management Studio管理工具. 要解决这个问题,可以有以下几种方法: 先安装SQL Server 2005,后安装VS. 将系统中所有与SQL Server相关的程序卸载干净,然后安装SQL Server 2005. 在安装VS的时候,不要选择S

Android开发中java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: java.lang.NullPointerException 错误的集中原因及解决办法

上面那个问题刚解决,就又来一个问题~~~~ 错误信息字符串:java.lang.RuntimeException: Unable to start activity ComponentInfo{...}: java.lang.NullPointerException 网上有不少解决办法 一般都会在Activity  onCreate()方法里的setContentView(XXX)发生此错误,网上查阅了很多原因,大概有四种重要可能的原因: 原因一:xxx的错误,若为R.layout.main 

win7系统安装VS2013后,连不上远程sqlserver数据库解决办法

刚搬了地方,顺便把电脑重做了系统,把sql2012和vs2013装好,怎么弄也连不上远程的数据库了,用程序连IIS直接死掉,用ssms连也是直接失去响应,开始以为是网线端口被运营商封杀了,最后发现不是的,是程序的原因.解决办法和大家分享一下,供大家参考: 以管理员的身份运行“命令管理器”,输入:netsh winsock reset 然后重启一下电脑. 本人亲测,问题解决了.参考资料URL:http://social.msdn.microsoft.com/Forums/zh-CN/030f66b