文档章节

总结系列--系统标准Activity的Action应用

k
 kim366
发布于 2016/05/13 19:13
字数 1166
阅读 6
收藏 0
        6.2   系统标准ActivityAction应用
       在Android系统中,应用程序一般都有多个Activity,Intent可以实现不同Activity之间的切换和数据 传递。 
       启动Activity方式有以下两种方式。
            显式启动,必须在Intent中指明启动的Activity所在的类。
            隐式启动,Android系统根据Intent的动作和数据来决定启动哪一个Activity,即在隐式启动时, Intent中只包含需要执行的动作和所包含的数据,而无须指明具体启动哪一个Activity,选择权由Android系统和最终用户来决定。

       1.显式启动
      使用Intent 显式启动Activity,首先需要创建一个Intent,指定当前的应用程序上下文及要启动的 Activity,并把创建好的Intent作为参数传递给startActivity()方法。代码如代码清单6-1所示。
      
       2.隐式启动
       隐式启动Activity时,Android系统在应用程序运行时解析Intent,并根据一定的规则对Intent和Activity 进行匹配,使Intent上的动作、数据与Activity完全吻合。而匹配的Activity可以是应用程序本身的,也可以是Android系统内置的,还可以是第三方应用程序提供的。因此,这种方式更强调了Android应用程序中组件的可复用性。 
       由此可以看出,隐式启动不需要指明需要启动哪一个Activity,而由Android系统来决定,有利于使用 第三方组件。
       Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
       startActivity(intent); 

      在上述代码中,Intent的动作是Intent.ACTION_VIEW,是根据Uri的数据类型来匹配动作;数据部分 的Uri是Web地址,使用Uri.parse(urlString)方法,可以简单地把一个字符串解释成Uri对象。
       Intent的语法
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlString));
      Intent构造函数的第1个参数是Intent需要执行的动作;第2个参数是Uri,表示需要传递的数据。
      Android系统支持的常见动作字符串常量表

      
       6.2.2   获取Activity返回值
       在6.2.1节的IntentDemo示例中,通过使用startActivity(Intent)方法启动Activity后,两个Activity 之间相互独立,没有任何关联。然而,在很多情况下,后启动的Activity是为了让用户对特定信息进行选择,在关闭这个Activity后,用户的选择信息需要返回给未关闭的那个Activity。由此,按照Activity启动的先后顺序,先启动的称为父Activity,后启动的称为子Activity,如果需要将子Activity的部分信息返回给父Activity,则可以使用Sub-Activity的方式去启动子Activity。
       获取子Activity的返回值,一般分以下3个步骤。
       1. 以Sub-Activity的方式启动子Activity 
       首先,调用startActivityForResult(Intent, requestCode)函数,其中,参数Intent用于决定启动哪个Activity, 参数requestCode是唯一的标识子Activity的请求码。
       
       2.设置子Activity的返回值
       在子Activity调用finish()函数关闭前,调用setResult()函数将所需的数据返回给父Activity。其中, setResult()函数有两个参数:结果码和返回值。结果码表明了子Activity的返回状态, 通常为Activity.RESULT_OK或Activity.RESULT_CANCELED,或自定义的结果码,结果码均为整数类型;返回值封装在Intent中,子Activity通过Intent将需要返回的数据传递给父Activity。数据主要是Uri形式,可以附加一些额外信息,这些额外信息用Extra的集合表示
     
       3.在父Activity中获取返回值
       当子Activity关闭时,启动它的父Activity的onActivityResult()函数将被调用;如果需要在父Activity 中处理子Activity的返回值,则覆盖此函数即可。      
       此函数的语法如代码清单6-14所示。 
       在上述代码中,第1个参数requestCode,用来表示是哪一个子Activity的返回值;第2个参数resultCode 用于表示子Activity的返回状态;第3个参数data是子Activity的返回数据,返回数据类型是Intent。返回数据的用途不同,Uri数据的协议也就不同。也可以使用Extra方法返回一些原始类型的数据。  
 
       在上述代码中,第1行代码和第2行代码是两个子Activity的请求码;第7行代码对请求码进行匹配; 第9行和第11行代码对结果码进行判断,如果返回的结果码是Activity.RESULT_OK,则在代码的第10行使用getData()函数获取Intent 中的Uri数据;反之,若返回的结果码Activity.RESULT_CANCELED, 则不进行任何操作。


本文转载自:http://blog.csdn.net/oyangyujun/article/details/47961405

共有 人打赏支持
k
粉丝 1
博文 129
码字总数 0
作品 0
朝阳
升级之前必看,关于安卓P的几大新特性,你知道吗?

  近日,安卓最新系统Android 9已经正式开始推送升级,Android 9的代号为Android P,在近日确认名为馅饼(pie),首批支持推送更新的机型是Google“亲儿子”Pixel系列,接着便是安卓手机之...

人工智能那点事
08/10
0
0
BroadcastReceiver与Notification的综合应用自定义Action的调用方式

在Android的实际应用开发中,我们经常会遇到数据推送的相关技术,比如在应用软件启动后,系统会自动在Android的通知栏弹出相应的信息,以便于提示用户进行相关的操作或消息推送。那这项技术在...

zretc
2013/07/18
0
0
Android系统中标准Intent的使用

一 Android系统用于Activity的标准Intent 1 根据联系人ID显示联系人信息 Intent intent = new Intent();intent.setAction(Intent.ACTION_VIEW); //显示联系人信息intent.setData(Uri.parse(......

厚德
2015/05/18
0
0
Android零基础入门第79节:Intent 属性详解(上)

Android应用将会根据Intent来启动指定组件,至于到底启动哪个组件,则取决于Intent的各属性。本期将详细介绍Intent的各属性值,以及 Android如何根据不同属性值来启动相应的组件。 Intent 对...

鑫鱻
2017/10/19
0
0
《Android开发艺术探索》Activity | 生命周期 | 启动模式 | Flags | IntentFilter action data的匹配规则 (一)

说几点 1.文章中大部分(所有吧)的内容都是与《Android开发艺术探索》书中写的内容是一致的,所以可以说是直接copy了一遍(没办法,作者写的太好了)。 2.为什么要copy一遍呢?,主要还是为...

a_zhon
05/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Univalsal_ImageLoader源码结构与创建者模式 初步小结

最近在回归看Univalsal_ImageLoader源码,本想自己也实现试试写一个,看源码是为了学习看能否使用,助于自己可以写出有自己逻辑结构的代码。 首先我们初始化ImageLoader的配置初始化的时候,...

DannyCoder
40分钟前
0
0
计算卷积神经网络浮点数运算量

前言 本文主要是介绍了,给定一个卷积神经网络的配置之后,如何大概估算它的浮点数运算量。 相关代码:CalFlops,基于MXNet框架的 Scala 接口实现的一个计算MXNet网络模型运算量的demo。 正文...

Ldpe2G
今天
3
0
Sql语言与MySql数据库

1. 数据库简介 1. 数据库,就是存储数据的仓库,只能通过sql语言来访问,数据库也是一个文件系统。通常,MySQL、Oracle等数据库,也被称为关系型数据库,其保存的不仅仅只是数据,还包括数据...

江左煤郎
今天
2
0
IDEA 取消自动import .*

打开设置 > Editor > Code Style > Java > Scheme Default > Imports ① 将 Class count to use import with "*" 改为 99 (导入同一个包的类超过这个数值自动变为 * ) ② 将 Names count ......

乔老哥
今天
3
0
PostGIS学习笔记(开篇)

PostGIS事实上算是笔者开始写博客的第一篇内容。而事实上那篇博文的内容并不丰富,笔者对PostGIS的了解仍然不多,然而17年在OSGeo课程学习时对PostGIS又有了进一步了解,并逐步发现它的强大。...

胖胖雕
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部