Android第一行学习代码笔记四---使用Intent在活动之间穿梭

别裁伪体亲风雅,转益多师是汝师。这篇文章主要讲述Android第一行学习代码笔记四---使用Intent在活动之间穿梭相关的知识,希望能为你提供帮助。
一:使用显示Intent
右键com.example.firstactivity包-> New-> Activity-> Empty Activity,活动名称为secondActivity,并勾选Generate Layout File,给布局文件起名为secondlayout,但并不勾选Launcher Activity选项,点击Finish,打开secondlayout.xml,将里面的代码替换成如下内容:

< ?xml version="1.0" encoding="utf-8"?> < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> < Button android:id="@+id/Button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Button2"/> < /LinearLayout>

还是定义了一个按钮,按钮上显示Button2,然后secondActivity中的代码已经自动生成了一部分,默认保持不变,另外任何一个活动都需要在AndroidManifest.xml中注册,系统已经帮我们注册了,由于secondActivity不是主活动,因此不需要配置< intent-filter> 标签里的内容,现在第二个活动已经创建完成,剩下的就是如何去启动第二个活动了---Intent
Intent:是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动服务以及发送广播等场景。
Intent有多个构造函数的重载:
Intent(Content packageContent,Class< ?> cls),第一个是要求提供一个启动活动的上下文,第二个参数Class是指定要启动的目标活动,通过这个构造函数就可以构建出Intent的“意图”。Activity类中提供了一个startActivity()方法,这个是专门用于启动活动的,它接收一个Intent参数,这里我们将构建好的Intent传入startActivity()方法就可以启动目标活动了。
修改firstActivity中按钮的点击事件:
button.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Intent intent=new Intent(firstActivity.this,secondActivity.class); startActivity(intent); } });

首先构建了一个Intent,传入firstActivity.this作为上下文,传入SecondActivity.class作为活动目标,“意图”很明显了,即在firstActivity这个活动的基础上打开secondActivity活动,然后通过startActivity()方法执行这个Intent。
Android第一行学习代码笔记四---使用Intent在活动之间穿梭

文章图片

可以看到我们已经成功启动secondActivity这个活动了,使用这中方法来启动活动,Intent“意图很明显,因此成为显示Intent”。
二:隐式Intent:
它并不明确指出我们想要启动哪一个活动,而是指定一系列更为抽象的action和category等信息,交由系统去分析这个Intent,并帮我们找出合适的活动去启动。合适的活动就是可以响应这个隐式Intent的活动,通过在< activity> 标签下配置< intent-filter> 的内容,可以指定当前活动能够响应的action和category,打开AndroidMainfest.xml,添加如下代码:
< activity android:name=".secondActivity"> < intent-filter> < action android:name="com.example.firstactivity.ACTION_START"/> < category android:name="android.intent.category.DEFAULT"/> < /intent-filter> < /activity>

在< action> 标签中我们指明了当前活动可以响应com.example.firstactivity.ACTION_START这个action,而< category> 标签包含了一些附加信息,更精确的指明了当前活动能够响应的Intent还可能带有的category,只有和标签中内容同时匹配的Intent指定的action和category时,这个活动才能响应Intent。
修改firstActivity中按钮的点击事件,代码如下:
button.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Intent intent=new Intent("com.example.firstactivity.ACTION_START"); startActivity(intent); } });

我们使用了Intent的另一个构造函数,直接将action字符串传了进去,表明我们想启动能够响应com.example.firstactivity.ACTION_START这个action的活动至于category,因为android.intent.category.DEFAULT是一种默认的category,在调用startActivity的时候自动将category加到Intent,重新运行程序和显示Intent效果相同。说明我们在< activity> 标签配置的action和category生效了。
每个Intent只能指定一个action,但却能指定多个category,目前我们的category只有一个默认的category,现在增加一个自定义的,可以使用Intent的addCategory()方法添加。因为要< action> 和< category> 同时匹配上才能响应,所以要在AndroidManifest.xml中声明。
< activity android:name=".secondActivity"> < intent-filter> < action android:name="com.example.firstactivity.ACTION_START"/> < category android:name="android.intent.category.DEFAULT"/> < category android:name="com.example.firstactivity.MY_CATEGORY"/> < /intent-filter> < /activity>

【Android第一行学习代码笔记四---使用Intent在活动之间穿梭】

    推荐阅读