Android学习--Intent
Intent :
Intent 是一个动作的完整描述,一种运行时的绑定机制,Intent中包含对Intent有兴趣的组件信息,如对动作的产生组件、接受组件和传递的数据信息。Android根据此Intent描述,在不同的组件之间传递消息,执行相关的动作,完成组件的调用。
Intent的基本构成结构:Intent对象抽象地描述了要执行的动作,主要内容包括了:组件名称(componentName)、动作(Action)、数据(data)、类别(category)、附加信息(Extra)和标志位(Flag)。
- 组件名称(ComponentName对象),ComponentName包含两个String成员,分别代表目标组件类名和目标组件所在应用程序包名,包名必须和AndroidManifest.xml文件标记中的对应信息一致。ComponentName通过setComponentName()、setClass()或者setClassName()设置,通过getComponent()获取。对于Intent,组件名称不是必需的。如果一个Intent对象添加了组件名,则称为“显示Intent”,若没有添加组件名,则称为“隐式Intent”。通常,Android会根据Intent中包含的其他信息(如action、data、category)进行查找,最终找到一个与之匹配的目标组件。但是如果componentName这个属性有指定,将直接使用这个指定的组件,而不执行上述的查找过程。
- 动作(action)action是要执行的动作。它描述了Intent会触发的动作。Android系统中已经预定义了一些acton常量,可以参考SDK文档。除了系统定义的action,可以自定义action,在自定义action时,一般要加上包名作为前缀(为了防止重复定义)。一个对象的动作通过setAction()方法设置,通过getAction()方法读取。
- 数据(data)即执行动作需要操作的数据。data描述了Intent执行动作所能操作数据的MIME类型和URL,不同的Action用不同的操作数据。例如Activity字段是ACTION_EDIT,data字段将显示包含于编辑的文档URI;如果Activity是ACTION_CALL,data是一个tel://URL和将要拨打的电话号码;在许多情况下,数据类型能够从URI中推测出来,当然,也能显式的设置,setData()方法制定数据的URI,setType()指定MIME类型,setDataAndType()指定数据的URI和MIME类型。通过getData()读取URI,getType()读取类型。匹配一个Intent到一个能够处理data的组件,知道data的类型(它的MIME类型)和它的URI很重要。
- 类别(category)被执行动作的附加信息。例如:LAUNCHER_CATEGOTY表示Intent的接受者应该是launcher中作为顶级应用出现的;而ALTERNATIVE_CATEGORY表示当前Intent是一系列的可选动作中的一个,这些动作可以再同一块数据上执行。通过addCategory()方法添加一个种类到Intent对象中;通过removeCategory()方法删除一个之前添加过的种类;通过getCategory()方法获取Intent对象中的所有种类。
- 附加信息(extra),extra是一组键值对,包含了需要传递给目标组件并有其处理的一些附加信息。Intnet有一系列putXXX()方法用于插入各种附加数据,有一系列getXXX()方法取出各种附加数据。
利用Intent实现多个Activity之间切换
在MainActivity.java中
Intent intent = new Intent(MainActivity.this,OneActivity.class);
intent.putExtra("msg", "Hello No.1");
startActivity(intent); //或者
Intent intent = new Intent();
intent.setClass(MainActivity.this,OneActivity.class);
intent.putExtra("msg", "Hello No.1");
startActivity(intent);
在OneActivity.java中
1 public class OneActivity extends Activity {
2 @Override
3 protected void onCreate(Bundle savedInstanceState) {
4 // TODO Auto-generated method stub
5 super.onCreate(savedInstanceState);
6 setContentView(R.layout.layout_one);
7 Intent intent = getIntent();
8 String msg = intent.getStringExtra("msg");
9 Toast.makeText(OneActivity.this, msg,Toast.LENGTH_SHORT).show()
10 }
通过定义一个Intent 将两个界面绑在一起。启动一个新界面的时候,只要调用startActivity(Intent)就可以了,并且通过putStringExtra()方法传送信息。
Android学习--Intent的更多相关文章
- Android学习之 Intent详解
一. Intent 作用 Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯.比如说调用startActivity()来 ...
- android学习日记05--Activity间的跳转Intent实现
Activity间的跳转 Android中的Activity就是Android应用与用户的接口,所以了解Activity间的跳转还是必要的.在 Android 中,不同的 Activity 实例可能运 ...
- Android学习笔记-Intent(一)
Intent对象在Android官方API这样描述:It is a passive data structure holding an abstract description of an opera ...
- android之intent显式,显式学习
intent,意图 当从一个Activity到另一个Activity时调用,这里重点学习显式,隐式的使用 使用语句上的区别: 隐式意图: 显式意图: setAction ...
- android学习四---Activity和Intent
1.android项目资源深入了解 在深入学习android之前,先好好玩玩手机上的应用,大部分程序都有一个图标,点开图标,程序启动,一定时间后,程序会跳转到第一个界面,比如手机QQ,点开图标,会跳出 ...
- 【转】Pro Android学习笔记(十二):了解Intent(下)
解析Intent,寻找匹配Activity 如果给出component名字(包名.类名)是explicit intent,否则是implicit intent.对于explicit intent,关键 ...
- 【转】Pro Android学习笔记(十):了解Intent(上)
目录(?)[-] Intent基本含义 系统的Intent Android引入了Intent的概念来唤起components,component包括:1.Activity(UI元件) 2.Servic ...
- Android学习总结(十)———— Intent的使用
一.Intent的基本概念 我们已经学习完了Android的四大组件了,在四大组件中我们用得最多的是Intent-Filter.Intent含义就是你想利用它调用哪个组件实现相关的功能,比如调用相机组 ...
- (转载)Android学习之Intent使用
ndroid学习之Intent使用 1.使用显示Intent Intent intent = new Intent(FirstActivity.this,SecondActivity.class) ...
- Android 学习Activity(1)activity和intent
工具是:JDK环境配置+SDK+ADT工具 一.Activity 主要作用: 1.用户与应用程序的接口 2.控件的容器 二.创建Activity要点:(在src中的目录下包里) 1.一个Activi ...
随机推荐
- 编译nw-node版本的插件
编译nw-node版本的插件 下载nwjs对应版本的nodejs 原始源码目录 yh@yh:~/addon$ tree . ├── addon.cc ├── binding.gyp ├── CppLi ...
- 唱衰这么多年,PHP 仍然还是你大爷!
PHP 是个庞然大物. 尽管有人不断宣称 PHP "即将消亡". 但无法改变的事实是:互联网依然大量依赖 PHP.本文将通过大量的数据和事实告诉你为何 PHP 仍然在统治着互联网, ...
- Eolink Apikit 如何进行自动化测试?
自动化测试是一种软件测试方法,利用自动化工具和脚本来执行测试用例,以验证软件应用程序的功能.性能.稳定性等特性.自动化测试的主要目的是提高测试效率.减少测试成本,并确保软件的质量和可靠性. 作为测试人 ...
- Codeforces Round 848 (Div. 2)C
B. The Forbidden Permutation 一定要注意题目中说的是对于all i满足才算不好的,我们做的时候只要破坏一个i这个a就不算好的了,被这一点坑了,没注意到all. #inclu ...
- 阿里云创建BUCKET脚本
创建BUCKET脚本 安装模块 pip install pymysql pip install aliyun-python-sdk-core pip install aliyun-python-sdk ...
- 队列(c++源码)
queue.h #ifndef QUEUE_H_ #define QUEUE_H_ #include<iostream> template<class T> struct No ...
- 题解 CF277A
题目大意: 有 \(n\) 名员工,一共有 \(m\) 种语言,每名员工都会其中 \(k_i\) 种语言(\(m \ge \boldsymbol{k_i \ge 0}\)),现规定两名员工可以交流的条 ...
- 【随手记录】Llama Tutorial 大语言模型实践
这个tutorial的契机是yy突然看到了一个workshop 所以类似于一周大作业的形式,输入command输出使用了自动驾驶哪些模块,代码在这里 所以就干一干,顺便写一个tutorial给大家参考 ...
- 等保测评之主机测评——Centos7
目录 基础信息收集 (一)身份鉴别 (二)访问控制 (三)安全审计 (四)入侵防范 (五)恶意代码防范 (六)可信验证 (七)数据完整性 (八)数据保密性 (九)数据备份恢复 (十)剩余信息保护 命令 ...
- C语言有一分数序列: 2/1, 3 / 2,5/3,8/5,1 3/8,2 1/13... 求出这个数列得前20项之与。
#include <stdio.h> void main() { int x, n = 20; double a = 2, b = 1, sws = 0; for (n; n >= ...