使用Intent实现Activity的显式跳转

摘要:
"android:textSize="25sp"/˃可以看到设置id的方法是id="@+id/button1",这里button1即我们将使用的资源id。˃cls)传入组件的构造函数,也就是上文提到的6)、Intent(Stringaction,Uriuri,ContextpackageContext,Classcls)前两种结合体Intent有六种构造函数,3、4、5是最常用的,并不是其他没用!Intent的action就是对应在AndroidMainfest.xml中的action节点的name属性值。在Intent类中定义了很多的Action和Category常量。

【正文】

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

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方法实现跳转

packagecn.com.farsight.activity02;

importandroid.app.Activity;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.Button;

public class MainActivity extendsActivity {

    @Override
    protected voidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        /** 点击一个按钮,完成从一个页面跳转到另外一个页面
         */

        //1.点击按钮才发生页面跳转,因此,第一步我们先要找到要点击的按钮
        Button button =(Button) findViewById(R.id.button1);

        //2.找到按钮之后,点击按钮之后才会发生跳转,所以我们需要给这个按钮绑定事件监听器
button.setOnClickListener(newOnClickListener() {

            @Override
            public voidonClick(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,、,具体方法如下:

  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()方法,我们只需要在这个方法中加入待处理的逻辑就行了;

具体代码如下:

  1. publicclassMainActivityextendsActivity{
  2. privateButtonbutton;
  3. @Override
  4. protectedvoidonCreate(BundlesavedInstanceState){
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7. button=(Button)findViewById(R.id.button);
  8. button.setOnClickListener(newOnClickListener(){
  9. @Override
  10. publicvoidonClick(Viewv){
  11. //在此处添加逻辑
  12. }
  13. });
  14. }
  15. }

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

  1. Intentintent=newIntent();

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

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

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

  1. /**
  2. *Convenienceforcalling{@link#setComponent(ComponentName)}withthe
  3. *namereturnedbya{@linkClass}object.
  4. *
  5. *@parampackageContextAContextoftheapplicationpackageimplementing
  6. *thisclass.
  7. *@paramclsTheclassnametoset,equivalentto
  8. *<code>setClassName(context,cls.getName())</code>.
  9. *
  10. *@returnReturnsthesameIntentobject,forchainingmultiplecalls
  11. *intoasinglestatement.
  12. *
  13. *@see#setComponent
  14. */
  15. publicIntentsetClass(ContextpackageContext,Class<?>cls){
  16. mComponent=newComponentName(packageContext,cls);
  17. returnthis;
  18. }

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

  1. intent.setClass(MainActivity.this,SecondActivity.class);

3)告诉系统执行操作

  1. startActivity(intent);

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

免责声明:文章转载自《使用Intent实现Activity的显式跳转》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇coci2018 题解在webView 中使用JS 调用 Android / IOS的函数 Function下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CButtonEx的实现

要想修改CButton类按钮背景颜色和文字颜色,必须利用自绘方法对按钮进行重新绘制。这可以通过定义一个以CButton为基类的新按钮类来实现。以下为具体的实现方法: 方法一: 加入一个新类,类名:CButtonEx,基类:CButton。 在头文件 CButtonEx.h 中加入以下变量和函数定义: private: intm_Style; //按钮形状(...

ES6-10笔记(class类)

class类 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象。但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类)。摘自阮一峰老师语录 class声明 ES5的JavaScript中只有对象,想要模拟类去生成一个对象实例,只能通过定义一个构造函数,然后通过new操作符来完...

HTML编码规范

HTML编码规范 1 前言 HTML作为描述网页结构的超文本标记语言,在百度一直有着广泛的应用。本文档的目标是使HTML代码风格保持一致,容易被理解和被维护。 2 代码风格 2.1 缩进与换行 [强制] 使用 4个空格做为一个缩进层级,不允许使用 2个空格 或 tab字符。 示例: <ul> <li>first</li>...

WPF概述

Windows Presentation Foundation (简称WPF),是一个可创建适用于Windows的桌面客户端应用程序的UI框架。WPF框架支持广泛的应用程序开发功能,包括应用程序模型、空间、图形和数据绑定。WPF使用Extension Application Markup Language(XAML)为应用程序编程提供声明性模型。 WPF有...

Windows常见窗口样式和控件风格

Windows常见窗口样式和控件风格 一、窗口样式WS_POPUP 弹出式窗口(不能与WS_CHILDWINDOW样式同时使用)WS_CHILDWINDOW 子窗口(不能与WS_POPUP合用)WS_MINIMIZE 创建窗口拥有最小化按钮WS_MINIMIZEBOX 创建窗口拥有最小化按钮,须同时指定WS_SYSTEM样式WS_VISIBLE 可见状态W...

Android智能指针sp wp详解

研究Android的时候,经常会遇到sp、wp的东西,网上一搜,原来是android封装了c++中对象回收机制。说明:1. 如果一个类想使用智能指针,那么必须满足下面两个条件:a. 该类是虚基类RefBase的子类或间接子类b. 该类必须定义虚构造函数。如virtual ~MyClass(); 2. 本文以类BBinder来进行说明,其余类使用sp或wp...