Intent和Activity
来源:互联网 发布:java multieditor 编辑:程序博客网 时间:2024/05/18 15:53
在学习了组件Activity之后,就必不可少的需要了解Intent。首先介绍一下Intent,它的中文翻译为“意图”,它最常见的用途是绑定应用程序组件,并在应用程序之间进行通信。Intent一般用于启动Activity、启动服务、发送广播等,承担了Andriod应用三大核心组件相互间的通信功能。
一、Intent用于开启Activity
我们创建一个Activity,在它的click()方法中定义一个Intent对象,该对象用于开启另一个新的Activity:
//界面中按钮的点击事件
public void click(View view) {
//创建一个Intent对象,通过该对象开启第2个Activity
Intent intent = new Intent(this, Activity02.class);
startActivity(intent);
}
上述方法是一个显式意图,用在相同应用中启动其他Activity。通过Intent的构造方法来创建Intent对象,构造方法接收两个参数,第一个参数Context要求提供一个启动Activity的上下文,第二个参数class则是指定要启动的目标Activity,通过构造方法就可以构建出Intent对象。除了通过指定类名开启组件外,显示意图还可以根据目标组件的包名、全路径名来指定开启组件,代码如下:
intent.setClassName("cn.itcast.xxx","cn.itcast.xxx.xxxx");
startActivity(intent);
有了显式意图,当然就有隐式意图,即没有明确指定组件名的Intent,其功能比显式意图更加强大,可以开启其他应用的组件。Android系统根据隐式意图中设置的动作(action)、类别(category)、数据(Uri和数据类型)找到最合适的组件:
<activity android:name="com.itcast.intent.Activity02>
<intent-filter>
<!--设置action属性,需要在代码中根据所设置的name打开指定的组件-->
<action android:name="cn.itcast.xxx"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
用隐式意图开启Activity的代码如下:
Intent intent = new Intent(this, Activity02.class);
//设置动作和清单文件一样
intent.setAction("cn.itcast.xxx");
startActivity(intent);
二、Intent用于Activity之间传递数据
使用Intent传递数据只需调用putExtra()方法将想要存储的数据存在Intent中,当启动另一个Activity后,再把这些数据从Intent中取出即可。现在,Activity01中存储了一个字符串,我们要把它传递到Activity02中,首先可以通过显式意图开启Activity02,并通过putExtra()方法传递了一个字符串data:
String data = "hello Activity02"
Intent intent = new Intent(this, Activity02.class);
intent.putExtra("extra_data",data);
startActivity(intent);
putExtra()方法中的第一个参数接收的key,第二个参数接收的是value,在Activity02取出传递过来的数据:
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
Log.i("Activity02",data);
如果调用putExtras()方法则传递的是Bundle对象,需要先创建对应的Bundle对象:
Bundle bundle = new Bundle();
bundle.putString("name","Linda");
bundle.putInt("age",20);
Intent intent = new Intent(this, Activity02.class);
intent.putExtras(bundle);
startActivity(intent);
Activity02中的代码应为:Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String stuName = bundle.getString("name");
int stuAge=bundle.getString("age");
用Intent传递数据以及对象时,它的内部也是调用了Bundle对象相应的put()方法。
- Activity和Intent示例
- Android Activity和Intent
- Activity和Intent机制
- Android--Activity和Intent
- Activity和Intent机制
- Activity和Intent
- Activity和Intent
- Activity和Intent
- Activity 和 Intent
- Activity和Intent
- Android- Activity 和 Intent
- activity和intent介绍
- Activity和Intent机制
- Activity和Intent
- Activity和Intent
- Activity和Intent
- Activity和Intent
- Activity和Intent
- 配置OpenCV+VS2013开发环境
- 《前端工程化之NPM》
- 多线程_线程池的概述和使用
- 速度
- iOS 绘制折线
- Intent和Activity
- 在RecyclerView设置监听事件
- kali安装中文输入法
- c 函数的初使用
- android源码解析(5)--AsyncTask源码分析以及使用中的坑
- ACM程序设计书上题目小总结
- 【程序2】奖金根据利润提成
- MQTT 移植STM32+GPRS(串口透传)(四)
- 找出栈中最小元素 の 双栈实现