`
wangminshe89
  • 浏览: 667530 次
文章分类
社区版块
存档分类
最新评论

Android的Activity组件启动,切换和值传递学习

 
阅读更多

前面已经学过了Activity的生命周期(链接地址:Activity生命周期学习),今天集中来学习一下Activity组件的启动,切换和值传递

1:首先是如何创建一个Activity:

Activity提供了和用户进行交互的可视化界面,要创建Activity一般都要去继承Activity(当然有时候我们也可去继承例如ListView等等已经继承了的Activity的类)。

然后去覆写其中的onCreate()方法;其中创建的Activity类必须要在AndroidManset,xml文件中进行注册,(<activity android:name=".IntentActivity"/>)

看下面截图:

然后可以调用setContentView(layoutResID)进行视图展示,当然我还可以使用setContentView(this.getLayoutInflater().inflate(R.layout.xx, null));进行视图展示

然后可以去调用findViewById()的方法可以去进行实例化组件;

2:接下来就是要去启动一个Activity了,这里有个是程序入口Activity,Android系统启动的时候要找到程序入口类,就要去看在Androidmanifset文件配置一下IntentFiler标签

看下面代码:

<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>

要启动另一个Activity,我们需要用到Intent(意图),前面已经讲过一般有三种启动Activity的方法(链接地址:启动新的Activity的三种方法),这里三种是进行显式传递

还有一种是隐式传递:就要配置文件的中的IntentFilter标签起作用了,在Activity中设置Action();看个下面使用的方法

extras--加入附加信息;

category--IntentFilter;

Action--动作:

Data-动作相关的值
ComponentName-Context

[注意]这里的category标签一定要设置,因为android系统会默认设置 android.intent.category.DEFAULT 不设置会报错的,大家可以不设置看看效果

然后根据配置文件中设置的Action 的那么 在Activity中setAction()接着使用startActivity的时候,会进行匹配寻找对应的Activity(这里要设置的action的名字要相同)下面直接看截图:


3:Activity之间的值传递

对于Activity之间的值进行传递

第一种写法,把值一个个的put到Intent中,这种写法看起来就感觉方便而且可以节省代码,我常用的

intent.putExtra("id", 20);
intent.putExtra("name", "lihua");

第二种写法,显示用Bundle对象,先把数据放入到Bundle对象中,然后在批量的加入到Intent中

Bundle _Bundle = new Bundle();
_Bundle.putInt("age", 20);
intent.putExtras(intent);

Intent提供了各种常用类型重载后的putExtra()方法,如:putExtra(String name, String value)等等很多,

putExtra()方法内部会判断当前Intent对象内部是否已经存在一个Bundle对象,如果不存在就会新建Bundle对象,以后调用putExtra()方法传入的值都会存放于该Bundle对象;这一点我们可以在源代码中找到依据看下面的截图: (以 public Intent putExtra(String name, String value))为例:

通过源代码可以发现,其中Intent传递值内部就是靠着Bundle在起作用,所以平常使用中,我还是建议直接使用Intent.putXXX()方法把,如果用Bundle代码量有点多了哈;

上面值是设置到Intent当中去了,那么我们该怎么样在其他的Activity中进行取得呢?其中Bundle的机制相当于HashMap.直接getXXXExtra(key)就行了,看下面截图:

4:Activity进行切换得到返回的值:

主要使用startActivityForResult(Intent,requestCode)和重写onActivityResult(int requestCode, int resultCode, Intent data)

这里就要先学习一个请求码和结果码

请求码(requestCode):请求码的值是根据业务需要由自已设定,用于标识请求来源。例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面ActivityonActivityResult(int requestCode, int resultCode, Intent data)方法。在onActivityResult()方法如果需要知道新Activity是由那个按钮打开的,并且要做出相应的业务处理,

结果码(resultCode): 在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这些新Activity关闭后,系统都会调用前面ActivityonActivityResult(int requestCode, int resultCode, Intent data)方法。为了知道返回的数据来自于哪个新Activity

下面直接看Demo: 这个Demo演示当我们在第二个Activity中点击Button3或者Button4的时候我们会设置resultCode,然后在第一个Activity中覆盖onActivityResult()根据不同的resultCode,可以进行相应的操作

1:

2:


5:下面关闭Activity的方法

可以调用finish()或者finishActivity()方法


好啦今天就学到这里了,继续看书学习了,博客里面可能总结的不太好,如果感觉还可以看下去,感觉还行,也希望能顶下谢谢,如果有什么建议,欢迎留言或者加我QQ 一起交流哦



分享到:
评论

相关推荐

    Android Activity之间相互调用与传递参数的原理与用法分析

    本文实例讲述了Android Activity之间的相互调用与传递参数。分享给大家供大家参考,具体如下: Activity之间是如何调用的 在javaWeb程序中,jsp与jsp之间的调用是通过重定向完成的,而在Android中,Activity与...

    android学习文档

    Android学习文档 1 一、Android前言 3 1、Android发展历程 3 2、Android发展前景 8 3、Android 应用领域 9 二、准备工作 11 1、 Android开发环境搭建 11 1.1 第一种搭建Android的开发环境步骤: 12 1.2 第二种搭建...

    Android入门到精通源代码.

    第4章 Android人机界面和常用组件 4.1 用户人机界面元素分类 4.1.1 视图组件(View) 4.1.2 视图容器组件(ViewGroup) 4.1.3 布局组件(Layout) 4.1.4 布局参数(LayoutParams) 4.2 常用Widget组件 4.2.1 文本框...

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

    疯狂Android讲义源码

     10.1.2 启动和停止Service 376  10.1.3 绑定本地Service并与之  通信 377  10.1.4 Service的生命周期 381  10.2 跨进程调用Service  (AIDL服务) 382  10.2.1 AIDL服务简介 382  10.2.2 创建AIDL文件 383 ...

    Android开发案例驱动教程 配套代码

    3.2 Android中的组件介绍 22 3.3 使用Android SDK帮助 23 3.3.1 Android SDK API文档 23 3.3.2 Android SDK开发指南 24 3.3.3 Android SDK samples 24 3.4 使用DDMS帮助调试程序 26 3.4.1 启动DDMS 26 3.4.2 ...

    Android开发艺术探索.任玉刚(带详细书签).pdf

    第1章 Activity的生命周期和启动模式 1 1.1 Activity的生命周期全面分析 1 1.1.1 典型情况下的生命周期分析 2 1.1.2 异常情况下的生命周期分析 8 1.2 Activity的启动模式 16 1.2.1 Activity的LaunchMode 16 ...

    Android开发艺术探索

    第1章 Activity的生命周期和启动模式 / 1 1.1 Activity的生命周期全面分析 / 1 1.1.1 典型情况下的生命周期分析 / 2 1.1.2 异常情况下的生命周期分析 / 8 1.2 Activity的启动模式 / 16 1.2.1 Activity的...

    疯狂Android讲义.part2

    10.1.2 启动和停止Service 376 10.1.3 绑定本地Service并与之 通信 377 10.1.4 Service的生命周期 381 10.2 跨进程调用Service (AIDL服务) 382 10.2.1 AIDL服务简介 382 10.2.2 创建AIDL文件 383 10.2.3 将接口...

    android开发艺术探索高清完整版PDF

    , 《Android开发艺术探索》侧重于Android知识的体系化和系统工作机制的分析,通过《Android开发艺术探索》的学习可以极大地提高开发者的Android技术水平,从而更加高效地成为高级开发者。而对于高级开发者来说,仍然...

    疯狂Android讲义.part1

    10.1.2 启动和停止Service 376 10.1.3 绑定本地Service并与之 通信 377 10.1.4 Service的生命周期 381 10.2 跨进程调用Service (AIDL服务) 382 10.2.1 AIDL服务简介 382 10.2.2 创建AIDL文件 383 10.2.3 将接口...

    8天快速掌握Android教程源码

    56_activity切换动画与页面切换动画.avi 所在项目:animation 57_采用方向传感器实现指南针.avi 所在项目:sensor 58_拖拉功能与多点触摸.avi 所在项目:DragScale 59_各种图形的使用介绍.avi 所在项目:drawable 60...

    Android面试题(详细答案).doc

     C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带  D、处理一个应用程序整体性的工作  下列属于SAX解析xml文件的优点的是(b) A、将整个文档树在内存中,便于操作,支持删除,修改,重新...

    java安卓辅助源码-Android-Framework666:个性鲜明的Android开发框架Kotlin/MVVM

    容器与组件:将各整屏部分界面抽象为组建(Component)层,用于在Activity/Framgent/ViewPager等“容器”中方便切换内部主要内容,同时做了一个Fragment参数传递可选约束,支持Component间通过Android Navigation...

    房贷计算器和登录界面设计

    其它布局的用法(相对布局、框架布局)、特殊按钮的用法(复选框、开关按钮、单选按钮)、适配视图的基本用法(下拉框、数组适配器、简单适配器)、编辑框的用法(文本编辑框、自动完成编辑框)、Activity组件的基本...

Global site tag (gtag.js) - Google Analytics