使用Intent实现Activity的显式跳转

【正文】java

这里以按钮实现活动跳转为例,为实现这个功能,咱们须要三个步骤:android

1.点击按钮才发生页面跳转,所以,第一步咱们先要找到要点击的按钮app

如何拿到按钮对象呢?经过资源id,前面咱们提到过,在R.id.xxx 中会有咱们的资源id,但button按钮是在layout 中建立的,系统不会为其建立资源id,因此咱们须要在layout 设置 button 时本身加上id,、,具体方法以下:ide

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。ui

 

2.找到按钮以后,点击按钮以后才会发生跳转,因此咱们须要给这个按钮绑定事件监听器this

3.当有点击事件产生后,事件监听器就会监听到点击事件,而后去回调事件监听其中的onClick方法实现跳转url

 

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);
            }
        });
    }
}

 

 

 

 

2、使用 Intent 实现活动的显示跳转spa

这里咱们以按钮实现活动跳转为例,为实现这个功能,咱们须要三个步骤:.net

一、拿到按钮对象

       如何拿到按钮对象呢?经过资源id,前面咱们提到过,在R.id.xxx 中会有咱们的资源id,但button按钮是在layout 中建立的,系统不会为其建立资源id,因此咱们须要在layout 设置 button 时本身加上id,、,具体方法以下:

[java]  view plain  copy
 
  1. <Button  
  2.        android:id="@+id/button1"  
  3.        android:layout_width="match_parent"  
  4.        android:layout_height="wrap_content"  
  5.        android:text="点我点我!"   
  6.        android:textSize="25sp"/>  

能够看到设置id 的方法是 id = "@+id/button1",这里button1 即咱们将使用的资源id。

 

二、为此按钮设定点击监听事件

这样每当点击按钮时,就会执行监听器中的onClick()方法,咱们只须要在这个方法中加入待处理的逻辑就好了;

具体代码以下:

[java]  view plain  copy
 
  1. public class MainActivity extends Activity {  
  2.     private Button button;  
  3.       
  4.     @Override  
  5.     protected void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.activity_main);  
  8.           
  9.         button = (Button) findViewById(R.id.button);  
  10.           
  11.         button.setOnClickListener(new OnClickListener() {  
  12.             @Override  
  13.             public void onClick(View v) {  
  14.             // 在此处添加逻辑  
  15.             }  
  16.         });  
  17.     }  
  18. }  


三、实现跳转

      固然这是最重要的一步了,经过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有六种构造函数,三、四、5是最经常使用的,并非其余没用!

Intent(String action, Uri uri)  的action就是对应在AndroidMainfest.xml中的action节点的name属性值。在Intent类中定义了不少的Action和Category常量。

 

下面,咱们来具体实现:

1)、建立Intent 对象

[java]  view plain  copy
 
  1. Intent intent = new Intent();  

2)、把咱们的意图封装进Intent 对象中

这里咱们须要先了解 context :应用程序上下文,就是表示当前对象的一个语境,访问全局信息 的API

这里使用了Intent 的 setclass 方法,咱们来看看其定义:

[java]  view plain  copy
 
  1. /** 
  2.     * Convenience for calling {@link #setComponent(ComponentName)} with the 
  3.     * name returned by a {@link Class} object. 
  4.     * 
  5.     * @param packageContext A Context of the application package implementing 
  6.     * this class. 
  7.     * @param cls The class name to set, equivalent to 
  8.     *            <code>setClassName(context, cls.getName())</code>. 
  9.     * 
  10.     * @return Returns the same Intent object, for chaining multiple calls 
  11.     * into a single statement. 
  12.     * 
  13.     * @see #setComponent 
  14.     */  
  15.    public Intent setClass(Context packageContext, Class<?> cls) {  
  16.        mComponent = new ComponentName(packageContext, cls);  
  17.        return this;  
  18.    }  

这里 packageContext 即咱们如今的 activity ,而Class<?> cls 则是咱们的目的activity ,咱们看看具体实现:

[java]  view plain  copy
 
  1. intent.setClass(MainActivity.this,SecondActivity.class);  

 

3)告诉系统执行操做

[java]  view plain  copy
 
  1. startActivity(intent);  

实现这三步就能基本实现活动的跳转了;

相关文章
相关标签/搜索