使用Intent实现Activity的显式跳转
【正文】
这里以按钮实现活动跳转为例,为实现这个功能,我们需要三个步骤:
1.点击按钮才发生页面跳转,因此,第一步我们先要找到要点击的按钮
如何拿到按钮对象呢?通过资源id,前面我们提到过,在R.id.xxx 中会有我们的资源id,但button按钮是在layout 中创建的,系统不会为其创建资源id,所以我们需要在layout 设置 button 时自己加上id,、,具体方法如下:
在Activity_main.xml中
<Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点我点我!" android:textSize="25sp"/>
可以看到设置id 的方法是 id = "@+id/button1",这里button1 即我们将使用的资源id。
2.找到按钮之后,点击按钮之后才会发生跳转,所以我们需要给这个按钮绑定事件监听器
3.当有点击事件产生后,事件监听器就会监听到点击事件,然后去回调事件监听其中的onClick方法实现跳转
package cn.com.farsight.activity02; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* * 点击一个按钮,完成从一个页面跳转到另外一个页面 */ // 1.点击按钮才发生页面跳转,因此,第一步我们先要找到要点击的按钮 Button button = (Button) findViewById(R.id.button1); // 2.找到按钮之后,点击按钮之后才会发生跳转,所以我们需要给这个按钮绑定事件监听器 button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //3.当有点击事件产生后,事件监听器就会监听到点击事件,然后去回调事件监听其中的onClick方法 //在这里,我们就需要完成页面跳转了 //构建了一个Intent对象,来完成页面跳转 Intent intent = new Intent(MainActivity.this, Second.class); startActivity(intent); } }); } }
二、使用 Intent 实现活动的显示跳转
这里我们以按钮实现活动跳转为例,为实现这个功能,我们需要三个步骤:
1、拿到按钮对象
如何拿到按钮对象呢?通过资源id,前面我们提到过,在R.id.xxx 中会有我们的资源id,但button按钮是在layout 中创建的,系统不会为其创建资源id,所以我们需要在layout 设置 button 时自己加上id,、,具体方法如下:
可以看到设置id 的方法是 id = "@+id/button1",这里button1 即我们将使用的资源id。
2、为此按钮设定点击监听事件
这样每当点击按钮时,就会执行监听器中的onClick()方法,我们只需要在这个方法中加入待处理的逻辑就行了;
具体代码如下:
3、实现跳转
当然这是最重要的一步了,通过Intent 实现,我们先来了解一下Intent 函数;
Intent 意图,告诉系统我们要干什么,连接四大组件的纽带,可以启动活动、启动服务、发送广播;
公共构造函数:
1)、Intent() 空构造函数
2)、Intent(Intent o) 拷贝构造函数
3)、Intent(String action) 指定action类型的构造函数
4)、Intent(String action, Uri uri) 指定Action类型和Uri的构造函数,URI主要是结合程序之间的数据共享ContentProvider
5)、Intent(Context packageContext, Class<?> cls) 传入组件的构造函数,也就是上文提到的
6)、Intent(String action, Uri uri, Context packageContext, Class<?> cls) 前两种结合体
Intent有六种构造函数,3、4、5是最常用的,并不是其他没用!
Intent(String action, Uri uri) 的action就是对应在AndroidMainfest.xml中的action节点的name属性值。在Intent类中定义了很多的Action和Category常量。
下面,我们来具体实现:
1)、创建Intent 对象
2)、把我们的意图封装进Intent 对象中
这里我们需要先了解 context :应用程序上下文,就是表示当前对象的一个语境,访问全局信息 的API
这里使用了Intent 的 setclass 方法,我们来看看其定义:
这里 packageContext 即我们现在的 activity ,而Class<?> cls 则是我们的目的activity ,我们看看具体实现:
3)告诉系统执行操作
实现这三步就能基本实现活动的跳转了;