`
android_mylove
  • 浏览: 399780 次
社区版块
存档分类
最新评论

Android学习笔记(8)————详细谈谈intent的startActivityForResult()方法

 
阅读更多

/********************************************************************************************
* author:conowen@大钟
* E-mail:conowen@hotmail.com
* http://blog.csdn.net/conowen
* 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。
********************************************************************************************/

1、两种实现activity跳转的方法

实现activity的跳转主要有两种方法,startActivity()和startActivityForResult();

例如activity A跳转到activity B



对于,第一种,是把activity A的数据,通过intent传送到activity B,但是不能返回数据。

关于第一种,可以参考我之前的这篇博文

http://blog.csdn.net/conowen/article/details/7270393

2、第二种方法startActivityForResult()的详细用法

今晚谈的是第二种方法startActivityForResult();可以实现把activity A数据传送给activity B,也可以把activity B的数据返回来给activity A处理。


首先startActivityForResult 有两个参数,第一个为当前activity的intent(假设为activity A),至于第二个参数的用法,还是先看一下官方SDK文档的解释

一般都是设置大于或者等于0,因为activity A可能不单单要跳转到activity B,也可能跳转到activity C,D,E……,这些activity返回来的数据都交由activity处理,那activity又通过什么来分辨返回来的数据到底是哪个activity回来的呢。

所以在activity A跳转到某一个activity时,要设定目标activity的requestCode,这个requestCode就唯一地标识了相对应的activity。

如下所示,当要跳转到activity B时,15表示是activity B的标识,

同理,当在activity A的另外一个监听器要跳转到activity C时,设定activity C的标识为25。(大于或者等于0就行了)

(通过onActivityResult方法可处理代表不同activity的requestCode数值,详细用法在第3点。)


3、数据处理方法onActivityResult()详解


然后activity A通过复写onActivityResult方法来处理这些activity返回来的数据。onActivityResult定义如下:


3.1、数据处理方法onActivityResult()有三个参数,第一个requestCode是用来区分哪个activity回来的数据,可以通过swith语句来筛选。


基本框架代码如下:


3.2、第二个参数为resultCode,也是一个int类型,如果activity B有几种不同返回的结果,同样地可以通过resultCode来筛选。

当跳转到其他activity时,如activity B。需要知道的是,把activity B的数据返回去给activity A的处理方法是setResult (int resultCode, Intent data) ,可以看到它的第一个参数是resultCode,也就是对应着相应的处理方式,官方的推荐取值如下,这些是宏变量,实质是int。当然也可以自定义为数值,自己习惯就行了。


具体做法如下:如你可以在activity B做如下设置,两个button的监听器对应着两个resultCode,也就对应了两种处理方式,至于你要做什么事,在监听器定义即可。



3.3、第三个参数为Intent data,为activity返回来的数值,如通过data.getStringExtra("key");就可以取出来。


注意:调用setResult()方法跳回原来的activity时,一定要调用finish方法结束当前的activity

另外,如果activity A只需要跳转到activity B而已,那跳转时,request code只要大于或者等于0就行,而数据处理的方法onActivityResult()如下结构就行了,不用筛选request code。


===============================================================================================

附上详细代码

从第一个activity跳到第二个,主要是验证 resultCode,

从第一个activity跳到第三个activity 和跳到第二个activity,主要是验证requestCode

效果图:











分享到:
评论

相关推荐

    Android学习之路——4.Activity简介

    这篇博客"Android学习之路——4.Activity简介"很可能会详细解释Activity的基本概念、生命周期以及如何在实践中使用它。 Activity作为Android应用程序的一个窗口,它可以显示用户界面,并响应用户的交互。每个...

    第一行代码 android学习笔记 完整版

    Android学习笔记是Android开发者的必读书籍,书中涵盖了Android系统架构、Activity、Intent、资源管理等多方面的知识。本笔记对应的学习资源《第一行代码》是Android开发者的入门必读书籍,书中系统地介绍了Android...

    第7章 良好的学习开端——Android基本组件介绍之Android应用的灵魂——Intent和Activity介绍与实例

    android入门级视频:Android基本组件介绍之Android应用的灵魂——Intent和Activity介绍与实例

    Android之Intent通过startActivityForResult方法启动新Activity

    在Android应用开发中,Intent是连接应用程序组件的重要桥梁,它用于在不同的Activity、Service之间传递信息。`startActivityForResult()`是Intent的一种特殊用法,它允许一个Activity启动另一个Activity,并期望在新...

    Android学习之路——7.Service

    本篇文章将深入探讨“Android学习之路——7.Service”,分析Service的基本概念、使用方式以及常见应用场景,同时结合源码解析Service的工作原理,并提供一个实战Demo——Service_Demo。 一、Service基本概念 ...

    Android源码——Intent切换.zip

    本资料"Android源码——Intent切换.zip"很可能是关于Intent在Android应用开发中的详细解析,包括Intent的创建、使用方式以及源码分析。 首先,Intent分为显式Intent和隐式Intent两种类型。显式Intent明确指定了要...

    Android学习笔记(十一)——从意图返回结果

    在这个“Android学习笔记(十一)——从意图返回结果”中,我们了解到如何利用意图在两个Activity之间传递数据并返回结果。这是Android应用中常见的一种交互方式,对于实现用户界面的流程控制和数据通信非常重要。...

    [Android Studio应用开发——基础入门与应用实战][方欣,杨勃][电子课件]

    【Android Studio应用开发——基础入门与应用实战】是针对初学者和希望提升Android应用程序开发技能的人群设计的一门课程。这门课程由专家方欣和杨勃共同编写,旨在通过电子课件的形式,深入浅出地讲解Android ...

    Android学习笔记(十)——使用意图链接活动

    在Android应用开发中,意图(Intent)是连接各个组件的核心机制,它用于启动新的活动(Activity)、服务(Service)或广播接收器(BroadcastReceiver),传递数据和指令。本篇笔记将深入探讨如何使用意图来链接不同的活动,...

    安卓Android源码——Intent.rar

    本资源“安卓Android源码——Intent.rar”可能包含了Intent的详细源代码分析,帮助开发者深入理解Intent的工作原理。 1. **Intent基础概念**: Intent在Android中扮演着“信使”的角色,它携带数据并指明一个操作...

    Android Intent 学习笔记

    Android Intent 学习笔记

    startActivityForResult intent 跳转相关的

    这篇博客文章《startActivityForResult intent 跳转相关的》可能详细探讨了这个方法的工作原理以及在实际开发中的应用。 首先,`startActivityForResult()`的使用通常涉及两个Activity:发起请求的Activity(我们称...

    Android学习4——ListActivity,TabActivity

    在Android开发中,ListActivity和TabActivity是两个非常重要的组件,它们帮助开发者构建用户界面,提供数据展示和交互的功能。本文将深入探讨这两个组件的概念、用法以及它们在实际项目中的应用。 首先,我们来了解...

    Android四大核心——Intent

    在Android操作系统中,Intent是四大核心组件(Activity、Service、BroadcastReceiver、ContentProvider)之间通信的重要桥梁,也是应用程序中启动活动、启动服务、传递数据的关键工具。本篇将深入探讨Intent的基本...

    Android中文翻译组——Android中文合集(6)

    综上所述,"Android中文翻译组——Android中文合集(6)"包含的资料涉及了Android开发的各个方面,是学习和提升Android技能的重要资源。通过深入研究和实践这些知识点,开发者能够更好地理解和开发Android应用。

    免费 android 应用 源代码——记事本

    8. **测试和调试**:学习如何编写单元测试,以及使用Android Studio的调试工具定位和解决问题。 通过这份资源,初学者可以系统地学习Android应用开发,而有经验的开发者也可以借鉴其中的设计思路和最佳实践。同时,...

    安卓Android源码——Intent切换.zip

    本资料“安卓Android源码——Intent切换.zip”可能包含了关于如何在Android应用程序中使用Intent进行不同组件间切换的详细源码分析。 首先,我们来理解Intent的基本概念。Intent是一个意图声明,用于表达应用的意图...

    Android开发笔记——模拟器、应用教程

    Android开发笔记,内容涉及模拟器参数、进程与线程、Android 释放手机资源,进程释放优先级、分析HelloAndroid、添加编辑框与按钮、使用Intent启动另一个Activity、在不同Task中启动Activity、Intent与Intent ...

    ActivityTest.zip

    基于Android Studio 开发的源代码 本资源为本人以下博客的源代码。配对着代码学习会比较好 《Android学习笔记之——Activity》 ...《Android学习笔记之——通过Intent来实现Activity之间数据传递》

    Android Activity和Intent机制学习笔记

    ### Android Activity和Intent机制详解 #### 一、Activity机制概览 **1.1 定义及作用** 在Android开发中,Activity是最基本的应用组件之一,可以将其理解为用户界面的一个屏幕。它提供了用户与应用交互的主要场所...

Global site tag (gtag.js) - Google Analytics