zoukankan      html  css  js  c++  java
  • Android初级开发第八讲之startActivityForResult方法讲解

    博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved !  


    首先我们要解释一下,为什么要用这个方法?一般情况下我们使用intent来实现两个Activity之间的传递,但当前Activity需要下个Activity处理完毕返回一个值,但不通过跳转的方式,这时我们就要用到这个方法。

    一台手机设备就是一硬件设备,里面跑的一个个程序就相当于一个个虚拟机,每个应用程序都是独立存在的;也可以说手机是Administrator,各应用程序是guest用户,QQ是一个guest,新浪微博也是一个guest……各自在各自的进程中处理事件,但这些guest 可以通过一定手段如广播和Service来互相通信,或者监控手机的运行状态,一旦手机关机,所有guest用户均被关闭,下次开启时根据每个guest的不同需求,注册开机启动权限,你的应用就会在开机时被启动。

    此后介绍开发权当上述知识读者已知。

    应用场景:如照相程序,调用系统的照相机,即一个intent事件,将要保存地址传给系统,然后在onActivityResult对路径进行处理就可以了。

    前提:

    使用startActivityForResult方法的Activity的launchMode不能是singleTask或singleInstance,否则不能回传数据,被启动的Activity无限制。

    实现方法:

    1、在A中写明跳转方法,注意requestCode值要与onActivityResult中switch变量一致。

    		case R.id.launch_btn12:
    			Intent intent = new Intent(this, SpinnerActivity.class);
    			startActivityForResult(intent, 101);

        2、在A中实现onActivityResult方法,作为回调后使用
    	if (resultCode != RESULT_OK) {
    			return;
    		}
    		switch (requestCode) {
    		case 101:
    			String taskId = data.getStringExtra("taskId");
    			launch_tx12.setText(taskId);
    			break;
    		default:
    			break;
    		}

        3、在B中使用setResult方法返回传递的值
    Intent intent=new Intent();
    		intent.putExtra("taskId","SpinnerActivity" + getTaskId() );
    		setResult(RESULT_OK,intent);


    这样,就可以利用回调事件来处理数据,而不用setClass,同样可以传递数据,减少了内存的消耗。

    如果没有执行onActivityResult可能的原因如下:

    1、A中startActivityForResult第二个参数和B中setResult中第一个参数大小一样,导致B返回时找不到A

    2、A的launchMode不能设为singleInstance,singleTask,其他值都能设。

    3、setResult应在finish方法之前执行,同时A不能被销毁。

    注:super方法可以最前面,可写最后面,B中不必非setClass


  • 相关阅读:
    spark 集合交集差集运算
    Scala学习笔记1(安装)
    shell脚本调用spark-sql
    R语言中判断是否是整数。以及读写excel
    el-table的type="selection"的使用
    el-mement表单校验-校验失败时自动聚焦到失败的input框
    "org.eclipse.wst.validation" has been removed 导入maven 项目出错。
    java compiler level does not match the version of the installed java project facet 解决方案
    Referenced file contains errors (http://www.springframework.org/schema/context). For more information, right click on the message in the Problems
    编译异常 Caused by: java.lang.UnsupportedClassVersionError:
  • 原文地址:https://www.cnblogs.com/fengju/p/6174475.html
Copyright © 2011-2022 走看看