今天挑出一节专门来说一下使用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。

针对ComponentName这个类:(intent.setComponent(componentName);)
构造方法:
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的配置
首先,先来看一下intent-filter配置:这个配置一般写在AndroidManifest.xml:

<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”,作用都一样的,一般开发中为了让程序更具可读性,採用显式的方式比較多。

此外,看一下以下的标准Action和Category表:



2、Intent为Activity之间传值

前面是已经说了启动切换的问题,那如今假设有从当前的activity携带值进行跳转到还有一个Activity,这个应该怎么操作呢?
这里我们须要使用到Intent的Extra属性:
以下先看一段代码:
<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这个类,我们能够构造随意类型的參数,并且这样的方式极力推荐的。

详细操作方法,请查阅其API。

那怎么样接收參数呢?
看以下代码: 
<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的使用的更多相关文章

  1. Android笔记:intent

    一.显式intent如下:(1)在intent构造函数传入两个activity文件名Intent intent = new Intent(FirstActivity.this, SecondActiv ...

  2. Android开发学习笔记:Intent的简介以及属性的详解【转】

    一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述 ...

  3. 【转载】Android开发学习笔记:Intent的简介以及属性的详解

    http://liangruijun.blog.51cto.com/3061169/634411/ 一.Intent的介绍 Intent的中文意思是“意图,意向”,在Android中提供了Intent ...

  4. Android应用开发学习笔记之Intent

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Intent是什么呢?来看Android官网上的定义: An intent is an abstractdescri ...

  5. 【转】Android Activity和Intent机制学习笔记----不错

    原文网址:http://www.cnblogs.com/feisky/archive/2010/01/16/1649081.html Activity Android中,Activity是所有程序的根 ...

  6. Android Activity和Intent机制学习笔记

    转自 http://www.cnblogs.com/feisky: Activity Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具 ...

  7. Android笔记(七十四) 详解Intent

    我们最常使用Intent来实现Activity之间的转跳,最近做一个app用到从系统搜索图片的功能,使用到了intent的 setType 方法和 setAction 方法,网上搜索一番,发现实现转跳 ...

  8. Android笔记--View绘制流程源码分析(一)

    Android笔记--View绘制流程源码分析 View绘制之前框架流程分析 View绘制的分析始终是离不开Activity及其内部的Window的.在Activity的源码启动流程中,一并包含 着A ...

  9. Android安全之Intent Scheme Url攻击

    0X01 前言 Intent scheme url是一种用于在web页面中启动终端app activity的特殊URL,在针对intent scheme URL攻击大爆发之前,很多android的浏览 ...

随机推荐

  1. 用"池"来提升对象的复用

    对象池化是目前常用的一种系统优化的技术.通俗的说也就是一个对象不用多次的被实例化,来消耗性能,可以把这些常用的类放入一个池中,当需要的时候在去池里去拿去,不用的时候 在放入池中.可以叫做对象池.他可以 ...

  2. MVC之国际化

    MVC之国际化 前言 在项目中遇到国际化语言的问题是常有的事情,之前在做关于MVC国际化语言时,刚开始打算全部利用AngularJS来实现,但是渐渐发现对于页面Title难以去控制其语言转换,于是对于 ...

  3. hdu 3488 Tour

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3488 题意:给你一个N个顶点M条边的带权有向图,要你把该图分成1个或多个不相交的有向环.且所有定点都只 ...

  4. SVN无法修改以前提交日志的办法

    一直用SVN作为代码备份,但是今天偶然发现SVN上不能修改意见提交的代码,于是乎开始谷歌了,最后发现只需要在该工程下的hooks目录下放入pre-revprop-change.bat文件即可. pre ...

  5. [Android学习笔记]startActivityForResult和onActivityResult的使用

    发开过程中,免不了多个页面之间相互交互通信. Android中使用startActivityForResult方法和onActivityResult配合完成任务 startActivityForRes ...

  6. Android - JNI静态(static)载入OpenCV

    JNI静态(static)载入OpenCV 本文地址: http://blog.csdn.net/caroline_wendy 步骤: 1. 准备OpenCV-Android库 复制OpenCV的sd ...

  7. VSTO 得到Office文档的选中内容(Word、Excel、PPT、Outlook)

    原文:VSTO 得到Office文档的选中内容(Word.Excel.PPT.Outlook) 目的:得到在Word.Excel.PPT.Outlook中选中的一段内容. Word: private ...

  8. 一二三(The Seventh Hunan Collegiate Programming Contest)

    一二三 你弟弟刚刚学会写英语的一(one).二(two)和三(three).他在纸上写了好些一二三,可惜有些字母写错了.已知每个单词最多有一个字母写错了(单词长度肯定不会错),你能认出他写的啥吗? 输 ...

  9. android 在特殊应用的特殊功能,以帮助通信系统的问题

    在实际工程中的应用,进入一个特殊的应用后,系统的某个功能不能起作用. 当然,这个通信有非常多办法能够做到.笔者能够想到的至少有例如以下几种 1.利用property熟悉来实现,这种话须要添加一个特殊的 ...

  10. crm操作安全字段

    using System;     using Microsoft.Xrm.Sdk;     using Microsoft.Xrm.Sdk.Messages; /// <summary> ...