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的更多相关文章

  1. Android学习之 Intent详解

    一. Intent 作用 Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯.比如说调用startActivity()来 ...

  2. android学习日记05--Activity间的跳转Intent实现

    Activity间的跳转 Android中的Activity就是Android应用与用户的接口,所以了解Activity间的跳转还是必要的.在 Android 中,不同的 Activity 实例可能运 ...

  3. Android学习笔记-Intent(一)

    Intent对象在Android官方API这样描述:It is a passive data structure holding an abstract description of an opera ...

  4. android之intent显式,显式学习

    intent,意图 当从一个Activity到另一个Activity时调用,这里重点学习显式,隐式的使用 使用语句上的区别: 隐式意图:                 显式意图: setAction ...

  5. android学习四---Activity和Intent

    1.android项目资源深入了解 在深入学习android之前,先好好玩玩手机上的应用,大部分程序都有一个图标,点开图标,程序启动,一定时间后,程序会跳转到第一个界面,比如手机QQ,点开图标,会跳出 ...

  6. 【转】Pro Android学习笔记(十二):了解Intent(下)

    解析Intent,寻找匹配Activity 如果给出component名字(包名.类名)是explicit intent,否则是implicit intent.对于explicit intent,关键 ...

  7. 【转】Pro Android学习笔记(十):了解Intent(上)

    目录(?)[-] Intent基本含义 系统的Intent Android引入了Intent的概念来唤起components,component包括:1.Activity(UI元件) 2.Servic ...

  8. Android学习总结(十)———— Intent的使用

    一.Intent的基本概念 我们已经学习完了Android的四大组件了,在四大组件中我们用得最多的是Intent-Filter.Intent含义就是你想利用它调用哪个组件实现相关的功能,比如调用相机组 ...

  9. (转载)Android学习之Intent使用

    ndroid学习之Intent使用   1.使用显示Intent Intent intent = new Intent(FirstActivity.this,SecondActivity.class) ...

  10. Android 学习Activity(1)activity和intent

    工具是:JDK环境配置+SDK+ADT工具 一.Activity  主要作用: 1.用户与应用程序的接口 2.控件的容器 二.创建Activity要点:(在src中的目录下包里) 1.一个Activi ...

随机推荐

  1. Solution -「GXOI / GZOI 2019」宝牌一大堆

    Description Link. Summarizing the fucking statement is the last thing in the world I ever want to do ...

  2. 文心一言 VS 讯飞星火 VS chatgpt (99)-- 算法导论9.3 5题

    五.用go语言,假设你已经有了一个最坏情况下是线性时间的用于求解中位数的"黑箱"子程序.设计一个能在线性时间内解决任意顺序统计量的选择问题算法. 文心一言: 为了在线性时间内解决任 ...

  3. C++ 对拍详解 和解读

    对拍是什么# ​对拍,是一个比较实用的工具.它能够非常方便地对于两个程序的输出文件进行比较,可以帮助我们实现一些自动化的比较输出结果的问题. ​众所周知,几乎每一道编程题目,都会有某种正解能拿到满分: ...

  4. Python socket实现简单聊天,同步输入和接收消息

    查的资料很多都是必须等待接收数据后才能再次输入.做了修改,使用多线程的形式,实现一边输入,一边接收 服务端代码 import socket import threading import sys im ...

  5. 数据泵(impdb)导入Oracle分片的数据库dump文件

    数据泵(impdb)导入Oracle数据库 一.sqlplus登录目标数据库,创建导入的目录路径 #该目录要在导入的数据库本机建立,如果是docker就在容器内部创建 create directory ...

  6. 8. 用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP改造篇之HPACK原理

    用Rust手把手编写一个wmproxy(代理,内网穿透等), HTTP改造篇之HPACK原理 项目 ++wmproxy++ gite: https://gitee.com/tickbh/wmproxy ...

  7. [ABC205E] White and Black Balls 题解

    White and Black Balls 题目大意 将 \(n\) 个白球,\(m\) 个黑球排成一列,要求满足 \(\forall i\in[1,n+m],w_i\le b_i+k\),问存在多少 ...

  8. 使用VSCode新建解决方案,添加ClassLib类库工程

    最近准备全面转向VSCode开发C#代码,所以第一件事就是使用VSCode新建解决方案,添加工程. 通过ChatGPT找到的大致的实现方案: 首先,打开VS Code的终端,然后导航到您想要创建解决方 ...

  9. Vue 3 中用组合式函数和 Shared Worker 实现后台分片上传(带哈希计算)

    01. 背景 最近项目需求里有个文件上传功能,而客户需求里的文件基本上是比较大的,基本上得有 1 GiB 以上的大小,而上传大文件尤其是读大文件,可能会造成卡 UI 或者说点不动的问题.而用后台的 W ...

  10. fread实现getchar(加速!!!)

    fread实现的getchar代码: inline char get() { static char buf[100000], *p1 = buf, *p2 = buf; return p1 == p ...