Intent介绍及使用方法
2017-03-26 21:58
204 查看
前言
Intent在Android开发的应用非常常见,今天我就带给大家简单讲一下Intent的相关知识及其用法。
目录
一、定义
意图,描述的是应用的动作及其对应的数据。
二、作用
指定当前组件要完成的动作在Android不同组件不同组件进行数据的传递
Activity、Service、BroadcastReceiver之间的通信以Intent为通信载体
三、使用方法
3.1指定当前组件要完成的动作
分为显式和隐式意图:
1. 显式意图
a. 作用
明确指定需要启动的组件名
(调用Intent的构造方法、Intent.setComponent()或Intent.setClass()方法明确指定组件名)
b. 实例:
(目的:使用显示Intent的方式使FirstActivity启动SecondActivity)
mybutton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //实例化显式Intent,并通过构造函数接收两个参数 //第一个参数Context:启动活动的上下文,一般为当前Activity //第二个参数Class是指定要启动的目标活动 Intent intent = new Intent(FirstActivity.this,SecondActivity.class); //通过Activity类的startActivity()方法来执行该意图操作 //startActivity()方法是Activity类中提供的,专门用于启动活动的方法,它接收一个Intent对象 //我们将构建好的意图对象传入该方法就可以启动目标活动。 startActivity (intent); } });1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
隐式意图
a. 作用
没有明确指定需要启动的组件名,但却指定了需要启动组件需要满足的条件
通过IntentFilter声明
(AndroidManifest.xml文件下的标签下配置的内容,来指定当前活动能够响应的action和category。)
声明条件包括动作(Action)和类型(Category):
动作(Action):用来指明要实施的动作是什么-具体请查看Android.content.intent类;
类型(Category):一个字符串,包含了关于处理该intent的组件的种类的信息:
//为一个intent对象增加一个category addCategory(); //为一个intent对象删除一个category removeCategory; //获取intent所有的category getCategories();1
2
3
4
5
6
1
2
3
4
5
6
对于显式Intent不需要对Intent进行解析,直接启动;
对于隐式Intent需要对Intent进行解析:解析出条件-匹配组件-启动符合条件的组件;
b. 实例 (目的:使用隐示Intent的方式使FirstActivity启动SecondActivity)
mybutton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //实例化一个隐式Intent对象,并指定action参数 Intent intent = new Intent("android.intent.action.ALL_APPS"); //调用Intent中的addCategory()方法来添加一个category。 //每个Intent中只能指定一个action,但却能指定多个category。 intent.addCategory("com.example.intent_test.MY_CATEGORY"); startActivity (intent); } });1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
为了能使SecondActivity能继续响应该Intent,我们需要在AndroidManifest.xml文件下的标签下配置的内容,来指定当前活动能够响应的action和category。
<intent-filter > <action android:name="android.intent.action.ALL_APPS"/> <category android:name="android.intent.category.DEFAULT"> </category> <category android:name="com.example.intent_test.MY_CATEGORY"/> </intent-filter>1
2
3
4
5
6
1
2
3
4
5
6
3.2 不同组件之间传递数据传递
使用方法
在当前活动中调用PutExtra()方法把要传递的数据暂存在Intent中,并在新启动的Activity中取出Intent中的数据即可
可传递的数据类型
a. 八种基本数据类型(boolean byte char short int long float double)
b. String、Bundle、Parcelable、Serializable和CharSequence类型
实例:
目的:将FristActivity中的一个字符串传递到SecondActivity中,并在SecondActivity中将Intent对象中的数据(FristActivity传递过来的数据)取出
实现代码及解析
a. 数据传递代码
mybutton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new //使用显示Intent的方式来启动SecondActivity; Intent(FirstActivity.this,SecondActivity.class); String data = "I com from FirstActivity"; //通过putExtra()方法传递一个字符串到SecondActivity; //putExtra()方法接收两个参数:第一个是键,第二个是值,代表真正要传递的数据。 intent.putExtra("extra_data",data); startActivity(intent); } });1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
b. 数据取出代码
public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); //调用getInstent()方法获取用于启动SecondActivit的Intent Intent intent = getIntent(); //调用getStringExtra()方法,传入相应的键名,就可以得到传来的数据。 String data = intent.getStringExtra("data"); } }1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
相关文章推荐
- 【Android】Intent介绍及Intent在Activity中的使用方法
- Intent介绍及Intent在Activity中的使用方法
- Intent介绍及Intent在Activity中的使用方法
- Intent介绍及Intent在Activity中的使用方法
- Android学习笔记33:Intent介绍及Intent在Activity中的使用方法
- Intent介绍及Intent在Activity中的使用方法
- Android:Intent介绍 & 使用方法
- Android学习笔记33:Intent介绍及Intent在Activity中的使用方法
- Android学习笔记33-Intent介绍及Intent在Activity中的使用方法
- websharp的使用方法(1)介绍
- Rundll32介绍和使用方法
- ASP.NET公有六种验证控件,本文详细介绍了看这些控件的使用方法。
- AJAX学习基础:简单介绍数据岛使用方法
- aspjpeg组件高级使用方法介绍
- aspjpeg组件高级使用方法介绍
- Data Access Application Block(Enterprise Library 3.1)的下载以及使用方法介绍
- CProgressCtrl 进度条控件的使用方法简单介绍
- AspJpeg组件:介绍、注册、高级使用方法 [精]
- String.format函数使用方法介绍
- 迭代器的使用方法简要介绍(摘自C++Primer)