【正文】

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

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. @Override
  4. protected void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.activity_main);
  7. button = (Button) findViewById(R.id.button);
  8. button.setOnClickListener(new OnClickListener() {
  9. @Override
  10. public void onClick(View v) {
  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 对象

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

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

使用Intent实现Activity的显式跳转的更多相关文章

  1. 使用Intent实现Activity的隐式跳转

    相比于显式Intent,隐式Intent 则含蓄了许多,它并不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的action 和category 等信息,然后交由系统去分析这个Intent,并 ...

  2. Activity的显式跳转和隐式挑战

    安卓中Activity的跳转几乎是每一个APP都会用到的技术点.而且他的使用时十分简单的. 这里我们先说一下主要的技术要点: 1.在清单文件中注册新的Activity 2.通过意图跳转 这里我们看一下 ...

  3. 第一行Kotlin系列(二)Intent隐式显式跳转及向下传值

    1.Intent显式跳转页面 val button5 = findViewById<Button>(R.id.mButton5) button5.setOnClickListener { ...

  4. [转]Activity详解 Intent显式跳转和隐式跳转

    Activity 生命周期             显式 Intent 调用          1     //创建一个显式的 Intent 对象(方法一:在构造函数中指定)  2      Inte ...

  5. 【Android】6.0 添加Menu菜单组件、Intent启动活动、显式Intent、隐式Intent

    1.0 在helloworld项目基础上创建活动SecondActivity: 2.0 其中main.xml: <?xml version="1.0" encoding=&q ...

  6. 安卓--使用Intent实现Activity之间传值与跳转

    http://blog.csdn.net/cjjky/article/details/6337447 在一个Android的应用程序中,很少只存在一个Activity,一般都有多个Activity,如 ...

  7. 使用Intent实现Activity之间传值与跳转(转)

    转:http://blog.csdn.net/cjjky/article/details/6337447 在一个Android的应用程序中,很少只存在一个Activity,一般都有多个Activity ...

  8. Activity跳转显式方法及隐式方法

    1 public class AActivity extends AppCompatActivity { 2 private Button btnJump; 3 @Override 4 protect ...

  9. (转载)Android理解:显式和隐式Intent

    Intent分两种:显式(Explicit intent)和隐式(Implicit intent). 一.显式(设置Component) 显式,即直接指定需要打开的activity对应的类. 以下多种 ...

随机推荐

  1. UIWebView(本地数据部分)

    创建UIWebView和UISegmentedControl webView用于显示内容,segmentedControl用于切换读取内容的类型 为了方便起见 用拖拉控件形式布局完界面 /* 使用UI ...

  2. 安卓之cannot convert from Fragment1 to Fragment

    在写一个音乐播放器的时候,用到了fragment,结果在需要返回Fragment的方法里面,无法将Fragment1(Fragment的子类)强制转换成Fragment, 很是纳闷,我是参照一个开源代 ...

  3. eclipse慢 优化(转)

    1.打开 eclipse.ini -showsplash com.genuitec.myeclipse.product --launcher.XXMaxPermSize 256M -vmargs -D ...

  4. 在ubuntu14.04上安装oracle java6 java7的方法

    注意: Debian建议安装openjdk,在release包中已包含. oracle的java需要自己安装,安装步骤如下: 1. 首先安装java-package,安装方法:apt-get inst ...

  5. 安装 mysql

    1.安装mysql客户端 yum install mysql 2.安装mysql 服务器端 yum install mysql-server 3.配置 mysql字符集 /etc/my.cnf 加入 ...

  6. CSS样式的面向对象思想(一)

    今天来谈一谈CSS样式的面向对象写法.顾名思义,面向对象是高级语言具备的特性,主要是为了程序高可复用,解决模块之间的耦合关系,那么像CSS这样的脚本语言是否也可以使用面向对象的思想,来提高代码的可维护 ...

  7. Dapper中使用存储分页。

    #region 分页获取数据 /// <summary> /// 分页获取数据 /// </summary> /// <typeparam name="T&qu ...

  8. MVC中的控制器

    authour: chenboyi updatetime: 2015-04-25 12:22:35 friendly link:   目录: 1,思维导图 2,控制器约定 3,action向视图传值的 ...

  9. tornado项目

    tornado项目之基于领域驱动模型架构设计的京东用户管理后台 本博文将一步步揭秘京东等大型网站的领域驱动模型,致力于让读者完全掌握这种网络架构中的“高富帅”. 一.预备知识: 1.接口: pytho ...

  10. 网络流的一个很厉害的ppt

    链接: http://pan.baidu.com/s/1dECtMpz 密码: hdbm