android笔记6——intent的使用
今天挑出一节专门来说一下使用intent和intentfilter进行通信。
场景:一个Activity启动还有一个Activity。
前面已经讲了Fragment的切换,Fragment顾名思义是基于碎片切换的,假如我们要切换屏幕,或者是service组件等等,这就要用到Intent。
此外还想说明一下,Intent还具有非常好的设计思想在里面的。它将各种“启动意图”封装成一个一致编程模型,利于高层次的解耦。
1、Intent属性
- Component属性
<span style="white-space:pre"> </span>Intent intent = new Intent();
ComponentName componentName = new ComponentName(this, EventsActivity.class);
intent.setComponent(componentName);
startActivity(intent);
这段代码的功能是用作从当前的activity启动到EventsActivity。
public ComponentName(String pkg, String cls) public ComponentName(Context pkg, String cls) public ComponentName(Context pkg, Class<?> cls)<span style="white-space:pre"> </span>//上面代码中使用到的构造,一般也是经常用法
再来看Intent类里面的一段源代码:
public Intent setClass(Context packageContext, Class<?> cls) {
mComponent = new ComponentName(packageContext, cls);
return this;
} public Intent setClassName(String packageName, String className) {
mComponent = new ComponentName(packageName, className);
return this;
} public Intent setClassName(Context packageContext, String className) {
mComponent = new ComponentName(packageContext, className);
return this;
}
我想我不用多说了的,懂java的人都知道的。。。
- Action、Category属性与intent-filter的配置
<activity
android:name="com.xmind.activity.TestActivity"
android:label="@string/title_activity_test" > <intent-filter >
<span style="white-space:pre"> </span><action android:name="com.xmind.intent.action.TEST_ACTION" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter> </activity>
intent-filter里面包括了action和category,这两个标签与Intent里面action和category属性是一一相应的。
Intent intent = new Intent();
intent.setAction("com.xmind.intent.action.TEST_ACTION");
intent.addCategory("android.intent.category.DEFAULT");
startActivity(intent);
这个作用和上面是一样的,通过这两种方式,我们都能够启动其它的activity。通常我们将Component这样的方式称为“显式Intent”,顾名思义,另外一种Action的方式称为“隐式Intent”,作用都一样的,一般开发中为了让程序更具可读性,採用显式的方式比較多。
<span style="white-space:pre"> </span>Intent intent = new Intent();
intent.setAction("com.xmind.intent.action.TEST_ACTION"); intent.putExtra("test1", 1); Bundle bundle = new Bundle();
bundle.putBoolean("test2", false);
bundle.putSerializable("test3", new Person("Mr.稻帅",25)); intent.putExtras(bundle); startActivity(intent);
从上面能够看出,通过Bundle这个类,我们能够构造随意类型的參数,并且这样的方式极力推荐的。
<span style="white-space:pre"> </span>Intent intent = getIntent();
Bundle bundle = intent.getExtras(); Person person = (Person) bundle.getSerializable("test3"); textView = (TextView) findViewById(R.id.person_name);
textView.setText(person.getName()); textView = (TextView) findViewById(R.id.person_age);
textView.setText(person.getAge()+""); System.out.println(bundle.getInt("test1"));
System.out.println(bundle.getBoolean("test2"));
System.out.println(bundle.getSerializable("test3"));
从上面代码能够看到,还是使用Bundle这个类。
android笔记6——intent的使用的更多相关文章
- Android笔记:intent
一.显式intent如下:(1)在intent构造函数传入两个activity文件名Intent intent = new Intent(FirstActivity.this, SecondActiv ...
- Android开发学习笔记:Intent的简介以及属性的详解【转】
一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述 ...
- 【转载】Android开发学习笔记:Intent的简介以及属性的详解
http://liangruijun.blog.51cto.com/3061169/634411/ 一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent ...
- Android应用开发学习笔记之Intent
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Intent是什么呢?来看Android官网上的定义: An intent is an abstractdescri ...
- 【转】Android Activity和Intent机制学习笔记----不错
原文网址:http://www.cnblogs.com/feisky/archive/2010/01/16/1649081.html Activity Android中,Activity是所有程序的根 ...
- Android Activity和Intent机制学习笔记
转自 http://www.cnblogs.com/feisky: Activity Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具 ...
- Android笔记(七十四) 详解Intent
我们最常使用Intent来实现Activity之间的转跳,最近做一个app用到从系统搜索图片的功能,使用到了intent的 setType 方法和 setAction 方法,网上搜索一番,发现实现转跳 ...
- Android笔记--View绘制流程源码分析(一)
Android笔记--View绘制流程源码分析 View绘制之前框架流程分析 View绘制的分析始终是离不开Activity及其内部的Window的.在Activity的源码启动流程中,一并包含 着A ...
- Android安全之Intent Scheme Url攻击
0X01 前言 Intent scheme url是一种用于在web页面中启动终端app activity的特殊URL,在针对intent scheme URL攻击大爆发之前,很多android的浏览 ...
随机推荐
- 14.4.6 Configuring Thread Concurrency for InnoDB 配置Thread 并发
14.4.6 Configuring Thread Concurrency for InnoDB 配置Thread 并发 InnoDB 使用操作系统threads 来处理用户的事务请求.(事务可以执行 ...
- 自学PHP 环境搭建
自学PHP之环境搭建 一..首先 安装 phpStudy2013.exe 程序集成包 安装完可能端口被占用 需要手动设置 然后打开http://localhost:8080/phpMyAdmin/ ...
- Java线程的生命周期(转)
Java线程的生命周期 一个线程的产生是从我们调用了start方法开始进入Runnable状态,即可以被调度运行状态,并没有真正开始运行,调度器可以将CPU分配给它,使线程进入Running状态,真正 ...
- Vim -> 边确认边查找替换
进行简单的全局查找替换的时候,能够使用ex的例如以下命令 :%s/which/what/g 它的使用方法比較简单 % 表示每一行(everyline) s 替换(substitue) which 查找 ...
- 利用linux BT5来破解无线 破解无线
下面是自己整理的详细步骤,版权小冯全部. 一.提前准备好bt5的ISO镜像文件.和虚拟机,提前把虚拟机安装好.然后进行安装bt5. 二.进入页面,点击statx.进入可视化界面. 三.进入主界面后.下 ...
- 解决SQL查询总是超时已过期
解决SQL查询总是超时已过期 .在WIN8里提示:OLE DB 或 ODBC 错误 : 查询超时已过期; HYT00 1.由于数据库设计问题造成SQL数据库新增数据时超时 症状: Microso ...
- 给公司部门设计的SOA架构(转)
新来老大年前开会说:各位同学,公司业务越来越重,未来几年要成倍增长......,我们要梳理出一套新架构,才能更好的支持N万用户.....,以后升职加薪当上....打败..... 想想还有点小激动呢,于 ...
- iOS 搜索框控件 最简单的dome
刚学习搜索框控件,写了个最简单的dome #import <UIKit/UIKit.h> .h @interface ViewController : UIViewController&l ...
- 使用COM提供SafeArray数据
在前一篇博文<读取SafeArray数据>我们介绍了C#读取安全数组.那么我们的COM怎么编写呢? 1. 定义SAFEARRAY变量 SAFEARRAY *pSArray = NULL; ...
- hdu1151 Air Raid,DAG图的最小路径覆盖
点击打开链接 有向无环图的最小路径覆盖 = 顶点数- 最大匹配 #include <queue> #include <cstdio> #include <cstring& ...