Intent是意图的意思,分为显式 Intent 和隐式 Intent。下面我们试图在FirstActivity中通过点击按钮来启动SecondActivity
1.显式Intent
在应用中建立两个类,FirstActivity和SecondActivity。分别为它们建立layout布局文件first_layout,second_layout,并在AndroidManifest.xml中注册。
Intent的用法: Intent(Context packageContext, Class cls)。
这个构造函数接收两个参数,第一个参数 Context 要求提供一个启动活动的上下文,第二个参数 Class 则是指定想要启动的目标活动, 通过这个构造函数就可以构建出 Intent 的“意图”。
将FirstActivity中button1的响应事件修改为
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
光有意图还不够,Activity 类中提供了一个 startActivity()方法,这个方法是专门用于启动活动的,它接收一个 Intent参数,这里我们将构建好的 Intent传入 startActivity()方法就可以启动目标活动了。
2.隐式意图
隐式Intet并不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的 action 和 category 等信息,然后交由系统去分析这个 Intent,
并帮我们找出合适的活动去启动。
AndroidManifest.xml中在SecondActivity里添加
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
然后修改 FirstActivity 中按钮的点击事件
Intent intent = new Intent(“com.example.activitytest.ACTION_START”);
startActivity(intent);
因为动作相匹配,而类别是默认的,所以也能启动SecondActivity
每个 Intent 中只能指定一个 action,但却能指定多个 category。目前我们的 Intent 中只有一个默认的 category,那么现在再来增加一个吧。
Intent intent = new Intent(“com.example.activitytest.ACTION_START”);
intent.addCategory(“com.example.activitytest.MY_CATEGORY”);
startActivity(intent);
那么,我们在AndroidManifest.xml中注册的活动也要修改相应的类别才能响应这个Intent
<intent-filter>
<action android:name="com.example.activitytest.ACTION_START"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="com.example.activitytest.MY_CATEGORY"/>
</intent-filter>
再次重新启动程序,就ok了。
3.隐式Intent的另一个功能:显示网页
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(“http://www.baidu.com“));
startActivity(intent);
uri是统一资源标识符的缩写,先将百度的网址转化成统一资源标识符,然后在传入intent,ACTION_VIEW会根据传入的数据类型打开相应的活动,本例中打开的是网页,也可以打开拨号程序,地图定位等。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/tomi_en/article/details/47808701