• 使用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,、,具体方法如下:

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

     

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

    这样每当点击按钮时,就会执行监听器中的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. }  


    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 对象

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

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

  • 相关阅读:
    gjrand 4.0 发布,C语言的伪随机数生成器
    Kite 0.2.0 发布,编程语言
    IBM/DW C++11 标准新特性:Defaulted 和 Deleted 函数
    Apache Solr 3.6.2 发布
    bitmap 内存溢出处理
    Qtractor 0.5.7 发布,多轨音序生成器
    CUBRID Node.js Driver 1.1 发布
    OrientDB 1.3.0 发布,基于文档的数据库
    linux centos 下面httpd支持的svn 服务器端安装
    iptables 1.4.17 发布,Linux防火墙
  • 原文地址:https://www.cnblogs.com/chen-farsight/p/6192469.html
Copyright © 2020-2023  润新知