• 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


  • 相关阅读:
    SAP CDS view单元测试框架中的访问者(Visitor)设计模式使用介绍
    如何用SAP CRM中间件从ERP下载material division到CRM
    SAP CRM中间件Material Sales Organization和distribution channel的映射逻辑
    SAP CRM 中间件Request download里,遇到/SAPPSPRO/S_MAT_ENHANC_COMM 错误的解决办法
    SAP 数据库表CRMD_ORDERADM_I字段OBJECT_TYPE的计算逻辑
    一文带你了解数据中心大二层网络演进之路
    分布式身份:重新定义你的“身份”管理
    18篇文章系统解读:中台规划如何撬动企业IT基础设施转型升级
    案例展示自定义C函数的实现过程
    云原生2.0时代,华为云DevOps立体运维实践
  • 原文地址:https://www.cnblogs.com/fengju/p/6174475.html
Copyright © 2020-2023  润新知