本篇博文最后修改时间:2016年4月11日,22:37。
一、简介
本篇介绍显式Intent。
二、实验平台
系统版本:Windows7 家庭普通版 32位操作系统。
三、版权声明
博主:思跡
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.youkuaiyun.com/omoiato
联系方式:315878825@qq.com
Java零基础入门交流群:541462902
四、显式Intent
1、Intent是什么?
Intent 是Android 程序中各组件之间进行交互的一种重要方式,
它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。
Intent 一般可被用于启动活动、启动服务、以及发送广播等场景,
由于服务、广播等概念我们暂时还未涉及,
那么本章我们的目光无疑就锁定在了启动活动上面。
Intent 的用法大致可以分为两种,显式Intent 和隐式Intent,
我们先来看一下显式Intent如何使用。
Intent 有多个构造函数的重载,其中一个是Intent(Context packageContext, Class<?> cls)。
这个构造函数接收两个参数:
第一个参数Context 要求提供一个启动活动的上下文。
第二个参数Class 则是指定想要启动的目标活动,通过这个构造函数就可以构建出Intent 的“意图”。
我们应该怎么使用这个Intent 呢?
Activity 类中提供了一个startActivity()方法,
这个方法是专门用于启动活动的,它接收一个Intent参数,
这里我们将构建好的Intent传入startActivity()
方法就可以启动目标活动了。
2、怎样才能实现由主活动跳转到其他活动呢?
①在ActivityTest项目中新建一个second_layout.xml 布局文件,并定义一个按钮Button2
代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 2"
/>
</LinearLayout>
②新建活动SecondActivity 继承自Activity
代码如下:
public class SecondActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.second_layout);
}
}
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".FirstActivity"
android:label="This is FirstActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity" >
</activity>
</application>
由于SecondActivity 不是主活动,因此不需要配置<intent-filter>标签里的内容。
注册活动的代码也是简单了许多。
现在第二个活动已经创建完成,
剩下的问题就是如何去启动这第二个活动了。
④修改FirstActivity中按钮的点击事件
代码如下所示:
button1.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivity(intent);
}
});
我们首先构建出了一个Intent,
传入FirstActivity.this 作为上下文,
传入SecondActivity.class作为目标活动,
这样我们的“意图”就非常明显了:
即在FirstActivity 这个活动的基础上打开SecondActivity 这个活动,
然后通过startActivity()方法来执行这个Intent。
⑤重新运行程序,在FirstActivity 的界面点击一下按钮
运行结果:
可以看到,我们已经成功启动SecondActivity 这个活动了。
如果想要回到上一个活动怎么办呢?
很简单,按下Back 键就可以销毁当前活动,从而回到上一个活动了。
使用这种方式来启动活动,Intent 的“意图”非常明显,因此我们称之为显式Intent。