您的位置:首页 > 其它

Intent进阶 和 Intent-filter 学习笔记

2013-07-11 14:59 253 查看


1,Intent的基础用法

Intent是android中各activity之间通信的一个很重要的类,一般我们是这么使用的
//创建一个intent
Intent intent = new Intent();

//压值进intent中
//intent是基于一种基于Map的数据结构
//传我们的基本数据类型的可以之间key,value方式传值
intent.putExtra("hello","Hello world");

//但是,传一个对象的时要注意,该对象要实现序列化窗口才可以传值
//putExtra(String name, Serializable value)
Demo demo = new Demo();
intent.putExtra("Demo",demo);

//然后,我们把这个intent传到另外一个activity
intent.setClass(xxx.this,zzz.class);
startActivity(intent);

//-------
//目标activity
//获取传过来的intent
Intent intent = getIntent();

//从Intent中获取值
String hello = intent.getStringExtra("Demo");
Demo demo = (Demo)intent.getSerializable("Demo");


以上代码就是最基础的Intent的用法


2,深入Intent的构造和Intent-filter的基础入门

Intent()
//Create an empty intent.
Intent(Intent o)
//Copy constructor.
Intent(String action)
//Create an intent with a given action.
Intent(String action, Uri uri)
//Create an intent with a given action and for a given data url.
Intent(Context packageContext, Class<?> cls)
//Create an intent for a specific component.
Intent(String action, Uri uri, Context packageContext, Class<?> cls)
//Create an intent for a specific component with a specified action and data.


出这些构造方法中我们,可以看出,新建一个Intent其实可以设置很多东西,这里我说说componentName,action,category,data

componentName
直译的话就是组件的名字的意思,如果我们写的一个类当作成一个组件,那么这个componentName就是用来封装我们写的这些类的位置.

//创建一个component的对象
ComponentName componentName = new ComponentName(Context.this, xxx.class);

Intent intent  = new Intent();
Intent.setComponent(componentName);

startActivity(intent);

//----------
//在xxxactivity中
ComponentName comp = getIntent().getComponent();

String packageName = comp.getPackName();
String className = comp.getClassName();


其实细心的同学可以发现,其实跟setClass(),没什么区别吗,而且,还比setClass()麻烦,其实,setClass()是封装了这个功能而已,最实现还是要用到这个类.

转载地址:/article/4857492.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: