Intent详细介绍及使用实例
来源:互联网 发布:linux shell exec 编辑:程序博客网 时间:2024/05/15 22:58
一个Android程序通常有多个组件构成。如果要从一个Activity切换到另一个,必须用Intent来激活。实际上,Activity,Service和Broadcast Receiver这三种核心组件都需要使用Intent来激活。
- Intent对象可以传递给startActivity() 或startActivityForResult()方法来启动一个activity,或让一个已经存在的Activity去做其他任务。Intent也可以作为Activity.setResult() 的参数,返回给调用了startActivityForResult()的Activity。
- Intent对象可以传递给Context.startService()方法来初始化一个service或者向一个已经存在的service传递新的指令。类似的,传递给Context.bindService()方法可以在调用所在的组件和目标service之间建立一种连接。它可以有选择的初始化没有运行的服务
- Intent对象可以传递给Context.sendBroadcast(),Context.sendOrderedBroadcast(),或 Context.sendStickyBroadcast()等广播方法,使其发送给所有感兴趣的Broadcast Receiver
在Intent对象中应该包含如下信息:
- Component name(组件名称):组件名称通过setComponent(),setClass(),setClassName()设置,通过getComponent()获取。需要注意的是Componentname是一个可选项,如果被设置,那么Intent对象就显式指定了要转向的组件,如果没有被设置,则Intent对象需要根据其他信息进行筛选查找。
- Action(动作):Action是指Intent要完成的动作,是一个字符串常量。Intent类中定义了一系列动作常量,包括Activity和Broadcast两类。在Activity中标准动作最常用的是ACTION_MAIN(初始Activity,没有数据)和ACTION_EDIT(将数据显示给用户用于编辑),使用startActivity()启动。在标准广播动作中,通常使用registerRecevier()或者在配置文件中的<receiver>标签。Intent对象中的动作使用setAction()设置,使用getAction()读取。
- Data(数据):Data表示操作数据的URI和MIME类型,不同的动作有不同的数据规格。数据类型也可以显式指定,比如setData()方法指定数据为URI,setType() 指定为MIME类型,setDataAndType() 可以同时设置URI和MIME类型。读取的时候URI用getData(),MIME用getType()。
- Category(种类):Category是一个字符串,其中包含了能够处理这个Intent对象的组件类型的附加信息。addCategory()将种类添加到Intent中,removeCategory()将种类从Intent中移除上次添加的种类和getCategories()获取所有种类。
- Extras(额外):传递给Intent的额外数据,以Bundle的形式定义,就是一些键值对。Intent对象有一系列的putXXX()函数用于放入各种数据类型,相应的也有一系列的getXXX()函数用于读取数据。实际上,数据可以被作为一个Bundle对象被使用,利用 putExtras() 和 getExtras() 方法。
- Flags(标记):用来指定Android系统如何启动activity,还有启动了activity后如何对待它。所有这些都定义在Intent类中。所有标记都是正整数
Intent使用实例:
A 无参数Activity跳转
Intent intent = new Intent(MainActivity.this,DetailActivity.class);
startActivity(intent);
B 向下一个Activity传递数据
方法一:
MainActivity: Intent intent = newIntent(MainActivity.this, RegisterActivity.class);
Bundlebundle = new Bundle();
bundle.putCharSequence("user",user);
intent.putExtras(bundle);
startActivity(intent);
RegisterActivity: Intent intent = getIntent();
Bundle bundle = intent.getExtras();
TextViewuser = (TextView)findViewById(R.id.user);
user.setText("用户名:"+bundle.getString("user"));
方法二:
MainActivity: Intent intent = newIntent();
Intent.setAction(Intent.ACTION_VIEW);
startActivity(intent);
RegisterActivity: 就一个自然生成的布局文件。
AndroidManifest.xml在传递过去的SecondActivity中要说明
<actionandroid:name=”android:intent:action.VIEW”/>
C 回调函数
MainActivity:
final int CODE = 0x717;
startActivityForResult(intent,CODE);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODOAuto-generated method stub
super.onActivityResult(requestCode,resultCode, data);
if(requestCode == CODE && resultCode == CODE ){
}
}
RegisterActivity:
Button bn =(Button)findViewById(R.id.back);
bn.setOnClickListener(newOnClickListener(){
@Override
public voidonClick(View v) {
// TODOAuto-generated method stub
setResult(0x717,intent);
finish();
}
});
参考:
http://www.cnblogs.com/mengdd/archive/2013/03/18/2965839.html
- Intent详细介绍及使用实例
- Intent 详细介绍
- intent彻底详细介绍
- Intent的详细介绍
- NuSoap介绍及使用详细
- 关于intent 和 intent 过滤器 详细介绍
- Intent介绍及使用方法
- pod 的详细介绍及使用
- zookeeper的详细介绍及使用场景
- FormData的详细介绍及使用
- Android中XUtils3详细使用及介绍
- 阿里ARouter使用及原理详细介绍
- java 两种比较器的详细介绍及实例
- java 两种比较器的详细介绍及实例
- DBUtils详细介绍+实例
- JDBC详细介绍+实例
- Android Intent详细介绍及使用说明(显式、隐式和值传递)
- cJSON的使用介绍及实例分析
- 第8周项目5 - 计数的模式匹配.cpp
- Java中常见知识点
- Object-c学习笔记
- 大数据告诉你:美联储若加息将如何影响A股
- Java学习之final关键词
- Intent详细介绍及使用实例
- url是jsp后跟参数
- oracle 创建表空间,用户并授权
- Objective--C UISegmentedControl 交通灯
- 逆向工程(一):汇编、逆向工程基础篇
- 第9周项目2 - 对称矩阵压缩存储的实现与应用(1).cpp
- leetcode刷题日记——Excel Sheet Column Number
- Struts2获取request的几种方式汇总(list对象获取)
- 查找