使用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,、,具体方法如下:
- <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、为此按钮设定点击监听事件
这样每当点击按钮时,就会执行监听器中的onClick()方法,我们只需要在这个方法中加入待处理的逻辑就行了;
具体代码如下:
- public class MainActivity extends Activity {
- private Button button;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- button = (Button) findViewById(R.id.button);
- button.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- // 在此处添加逻辑
- }
- });
- }
- }
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 对象
- Intent intent = new Intent();
2)、把我们的意图封装进Intent 对象中
这里我们需要先了解 context :应用程序上下文,就是表示当前对象的一个语境,访问全局信息 的API
这里使用了Intent 的 setclass 方法,我们来看看其定义:
- /**
- * Convenience for calling {@link #setComponent(ComponentName)} with the
- * name returned by a {@link Class} object.
- *
- * @param packageContext A Context of the application package implementing
- * this class.
- * @param cls The class name to set, equivalent to
- * <code>setClassName(context, cls.getName())</code>.
- *
- * @return Returns the same Intent object, for chaining multiple calls
- * into a single statement.
- *
- * @see #setComponent
- */
- public Intent setClass(Context packageContext, Class<?> cls) {
- mComponent = new ComponentName(packageContext, cls);
- return this;
- }
这里 packageContext 即我们现在的 activity ,而Class<?> cls 则是我们的目的activity ,我们看看具体实现:
- intent.setClass(MainActivity.this,SecondActivity.class);
3)告诉系统执行操作
- startActivity(intent);
实现这三步就能基本实现活动的跳转了;
使用Intent实现Activity的显式跳转的更多相关文章
- 使用Intent实现Activity的隐式跳转
相比于显式Intent,隐式Intent 则含蓄了许多,它并不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的action 和category 等信息,然后交由系统去分析这个Intent,并 ...
- Activity的显式跳转和隐式挑战
安卓中Activity的跳转几乎是每一个APP都会用到的技术点.而且他的使用时十分简单的. 这里我们先说一下主要的技术要点: 1.在清单文件中注册新的Activity 2.通过意图跳转 这里我们看一下 ...
- 第一行Kotlin系列(二)Intent隐式显式跳转及向下传值
1.Intent显式跳转页面 val button5 = findViewById<Button>(R.id.mButton5) button5.setOnClickListener { ...
- [转]Activity详解 Intent显式跳转和隐式跳转
Activity 生命周期 显式 Intent 调用 1 //创建一个显式的 Intent 对象(方法一:在构造函数中指定) 2 Inte ...
- 【Android】6.0 添加Menu菜单组件、Intent启动活动、显式Intent、隐式Intent
1.0 在helloworld项目基础上创建活动SecondActivity: 2.0 其中main.xml: <?xml version="1.0" encoding=&q ...
- 安卓--使用Intent实现Activity之间传值与跳转
http://blog.csdn.net/cjjky/article/details/6337447 在一个Android的应用程序中,很少只存在一个Activity,一般都有多个Activity,如 ...
- 使用Intent实现Activity之间传值与跳转(转)
转:http://blog.csdn.net/cjjky/article/details/6337447 在一个Android的应用程序中,很少只存在一个Activity,一般都有多个Activity ...
- Activity跳转显式方法及隐式方法
1 public class AActivity extends AppCompatActivity { 2 private Button btnJump; 3 @Override 4 protect ...
- (转载)Android理解:显式和隐式Intent
Intent分两种:显式(Explicit intent)和隐式(Implicit intent). 一.显式(设置Component) 显式,即直接指定需要打开的activity对应的类. 以下多种 ...
随机推荐
- iOS应用架构谈 开篇 (转)
iOS应用架构谈 开篇 iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 网络层设计方案 iOS应用架构谈 动态部署方案 iOS应用架构谈 本地持久化方案 缘由 之前安居客iOS ap ...
- POJ3126 Prime Path (bfs+素数判断)
POJ3126 Prime Path 一开始想通过终点值双向查找,从最高位开始依次递减或递增,每次找到最接近终点值的素数,后来发现这样找,即使找到,也可能不是最短路径, 而且代码实现起来特别麻烦,后来 ...
- POJ 1240 Pre-Post-erous! 解题报告
题意: 给出一个m叉树的前,后序遍历求这样的树有多少种. Solution: 我们知道前序遍历的第一个点一定是根节点,后序遍历的最后一个点一定是根节点. 由此,我们只一要确定对于每一个节点,它有多少个 ...
- wariging for you oh~
- 你真的了解console吗?
对于前端开发者来说,在开发过程中需要监控某些表达式或变量的值的时候,用 debugger 会显得过于笨重,取而代之则是会将值输出到控制台上方便调试.最常用的语句就是console.log(expres ...
- 16 3Sum Closest(输出距离target最近的三个数的和Medium)
题目意思:给一个数组,给一个target,找三个数的和,这个和要与target距离最近,输出这个和 思路:这个题比3sum要稍微简单一点,如果需要优化,也可以去重,不过因为结果唯一,我没有去重. mi ...
- C语言字符串操作函数整理
整理C语言字符串相关的函数,以程序方式验证,以注释方式做说明. #include<stdio.h> #include<string.h> #include<stdlib. ...
- Android 数据库读取数据显示 [5]
2016-12-1 课程内容 昨天学了Android数据库升级.降级.创建 今天把数据库表里面的数据读取出来显示到手机屏幕上 下面代码是MainActivity.java 的代码 package co ...
- Qt 中如何捕获窗口停用和激活的消息
最近一直在用Qt做一个简单的俄罗斯方块的游戏,由于要实现一个暂停游戏的功能,就是当鼠标移出正在运行的游戏,点击电脑桌面上的其他位置时,这个时候游戏暂停.在这里把实现过程简单的记录一下,作为一个学习笔记 ...
- [Java] TreeMap - 源代码学习笔记
TreeMap 实现了 SortedMap 和 NavigableMap 接口,所有本文还会记录 SortedMap 和 NavigableMap 的阅读笔记. SortedMap 1. 排序的比较应 ...