声明:主要内容均来自于郭神的《Android-第一行代码》(第二版)。将行文思路做了整理和优化,更加清晰明了,便于初学者学习。
本文的主要目录如下:
Intent是Android程序中各组件进行交互的一种重要方式,它的主要功能有启动活动/服务,发送广播,在不同组件/活动之间传递数据。今天来介绍Intent的第一个功能——在活动之间跳转。
下面开始各部分的详细介绍,不同层级之间以标题级别区分。
在这个部分,将通过一个活动跳转的实例来帮助大家理解显示Intent的用法。大致行文思路如下:
下面开始各部分的详细介绍。
FirstActivity的建立有两种方式,可以在项目生成的时候直接选择Empty Activity;也可以通过在空项目(Add No Activity)中手动添加Empty Activity。
注意,如果是第二种情况,需要在AndroidManifext.xml中的
<activity android:name=".FirstActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
intent-filter>
activity>
其中 内的部分代表FirstActivity在这个项目中是我们的主活动,也就是app打开后出现的第一个界面。
FirstActivity新建完成后,将FirstActivity的布局文件(.xml)中的代码做如下替换:
<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/button_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 1"/>
LinearLayout>
这样FirstActivity的预览布局中就有了一个名字叫“Button 1”的按钮(贴图有点麻烦嘤嘤嘤原谅偷懒~),此时FirstActivity的布局基本完成。
接下来新建SecondActivity。右击com…..包->Activity->Empty Activity,勾选Generate Layout File, 将布局文件命名为second_layout,不勾选Launcher Activity选项(如果勾选此选项证明此活动为主活动)。
编辑second_layout.xml文件,将其中的代码进行如下替换:
<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/button_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 2"/>
LinearLayout>
这样我们的SecondActivity就有了一个叫“Button 2”的按钮。
用Intent实现从FirstActivity到SecondActivity的跳转
在FirstActivity的protected void onCreate(Bundle savedInstanceState)
函数内添加代码修改FirstActivity中按钮的点击事件,添加的按钮点击响应代码如下:
button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//这个是click启动第二个activity,显示intent
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
代码解释:
上方代码体现了Intent多个构造函数重载中的一个,Intent(Context packageContext,Class>cls
,这个构造函数接受两个参数,第一个参数Context
要求提供一个启动活动的上下文(也就是跳转前的活动,在这里就是FirstActivity),第二个参数Class
则是想要启动的目标活动。
在这个例子中,我们提供的启动活动的上下文就是FirstActivity.this
,而目标活动就是SecondActivity.class
。
在Activity类中,提供了一个startActivity()
方法,专门用于启动活动,它接受一个Intent参数,我们将新建好的Intent传入startActivity()
就可以启动目标活动SecondActivity啦。
Intent intent=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(intent);
这两行代码的意思就是:
在隐示Intent部分,将给出3个主要例子,来帮助对其的理解。
其实…我本来是想要一下子写完的,然而我发现写博客原来是如此枯燥的一件事情QWQ所以姑且先写显式Intent吧…隐式Intent下次再更~~
希望自己可以坚持下来OWO
如果你可以看到这篇文章,希望它对你有所帮助^_^