Intent除了可以开启一个活动,还能在启动活动的时候传递数据,此时Intent相当于一个保存数据的库,我们先把数据保存在Intent中,然后再根据各个activity的需要从其中取出数据。

 一、使用Intent向下一个activity传递数据

  1、思路:Intent中提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂时保存在Intent中,当启动另外一个活动后,再把这些数据从Intent中取出来就行了。

  2、在FirstActivity.java中有一个字符串,把这个字符串传递到SecondActivity.java中,操作如下:

FirstActivity.java中的代码:

SecondActivity.java中的代码:

  3、效果展示:

点击button1:进入到SecondActivity.java的活动页面

查看Logcat:
  1、根据SecondActivity.java中Log.d()传入的tag数据添加一个过滤器:SecondActivity

  2、将过滤器选为SecondActivity,就会看到打印出的数据

 二、使用Intent返回数据给上一个活动

  1、在Activity中有一个方法也可以启动活动,这个方法就是:startActivityForResult()方法,它可以在活动销毁的时候返回一些数据给上一个活动,startActivityForResult()方法接受两个参数。一个参数是Intent,第二个是请求码,用于在之后的回调中判断数据的来源,请求码只要是唯一的就行了(比如常量)。

FirstActivity.java的代码:

 public class FirstActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
/*
1、startActivityForResult()方法:当一个活动销毁时返回一个数据给上一个活动,它也可以开启一个活动,它传入两个参数
第一个参数:intent
第二个参数:请求码,唯一即可,用于判断数据的来源
2、使用startActivityForResult()方法来开启SecondActivity,当SecondActivity活动销毁过后,会调用上一个活动的onActivityResult()方法,
即这里的FirstActivity中的onActivityResult()方法,因此我们要在FirstActivity活动中重写onActivityResult()方法。
onActivityResult()这个方法的作用是得到返回的数据。
*/
}
});
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
String returnData = data.getStringExtra("return_extra");
Log.d("FirstActivity", returnData);
/*
1、该方法中传入三个参数:
requestCode:请求码
resultCode:处理结果
data:携带数据的Intent
*/
}
break;
default:
break;
}
}
}

SecondActivity.java中的代码:

  2、运行效果:

点击button1:进入SecondActivity活动界面

打开Logcat查看打印数据(先创建一个FirstActivity的过滤器):

 三、点击Back键返回数据
  上面返回给FirstActivity的数据是在点击SecondActivity活动界面的button2按钮触发的,如果用户直接通过手机的Back键回到FirstActivity界面,也是可以返回数据,我们只需要在SecondActivity.java中重写onBackPressed()方法就能解决该问题,代码如下:

  想要点击按钮与Back键均能返回数据,其他代码不变,把SecondActivity的代码结合就行了:

 public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
Button button=findViewById(R.id.button2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent();
intent.putExtra("return_extra","Button FirstActivity");
setResult(RESULT_OK,intent);
finish();
/*
1、这里的Intent仅仅是传递数据而已,没有任何意图,通过putExtra()方法把数据存放在intent中
2、setResult()方法:这个方法很重要,是专门用于向上一个活动返回数据的,这个方法有两个参数:
第一个参数:用于向上一个活动返回数据的处理结果,RESULT_OK 、 RESULT_CANCELED两种
第二个参数:返回的数据,将带有数据的intent返回过去
3、finish():销毁活动
*/
}
});
}
@Override
public void onBackPressed() {
Intent intent=new Intent();
intent.putExtra("return_extra","Back FirstActivity");
setResult(RESULT_OK,intent);
finish();
}
}

Android学习之基础知识四-Activity活动4讲(Intent传递数据)的更多相关文章

  1. Android学习之基础知识四-Activity活动3讲(Intent的使用)

    主活动名称FirstActivity.java改为了MenuTest.java 一.什么是Intent: 1.Intent是Android程序中各组件之间进行交互的重要方式,不仅可以指明当前组件想要进 ...

  2. Android学习之基础知识四-Activity活动6讲(体验Activity的生命周期)

    一.体验活动的生命周期的执行 代码组成: 1.三个Java类:MainActivity.java.NormalActivity.java.DialogActivity.java 2.三个布局文件:ac ...

  3. Android学习之基础知识四-Activity活动5讲(Activity的生命周期)

    一.返回栈 1.Android是通过任务(Task)来管理活动,一个任务就是一个返回栈内所有活动的集合. 2.返回栈是一个后进先出的数据结构,每启动一个新的活动,该活动就会覆盖原来的活动,位于栈顶位置 ...

  4. Android学习之基础知识四-Activity活动7讲(活动的启动模式)

    在实际的项目开发中,我们需要根据特定的需求为每个活动指定恰当的启动模式.Activity的启动模式一共有4种:standard.singleTop.singleTask.singleInstance. ...

  5. Android学习之基础知识四-Activity活动2讲

    一.在活动(activity)中添加Toast显示: 1.Toast作用:Android系统提供的一种非常好的提醒方式,将一些短小的信息提供给用户,这些信息会在一段时间后自动消失,不会占用任何屏幕空间 ...

  6. Android学习之基础知识四-Activity活动1讲

    一.活动(Activity)的基本用法: 1.手动创建活动FirstActivity(java源码): A.Android Studio在一个工作区间只允许打开一个项目,点击:File--->C ...

  7. Android学习之基础知识四-Activity活动8讲(活动的灵活运用)

    一.判断当前是在哪个活动 1.我们还是接着上一讲的代码,首先创建一个Java类:BaseActivity.java.这个类我们不作为一个活动,也不在AndroidManifest.xml中注册,它只是 ...

  8. Android基础知识04—Activity活动之间传递数据

    ------活动之间传递数据------ 向下一个活动传递数据: Intent中提供了一系列的putExtra()方法,可以把数据暂存到Intent中,启动另一个活动的时候就可以取出来. 代码: (存 ...

  9. Android学习之基础知识十六 — Android开发高级技巧的掌握

    一.全局获取Context的技巧 前面我们很多地方都使用到了Context,弹出Toast的时候.启动活动的时候.发送广播的时候.操作数据库的时候.使用通知的时候等等.或许目前来说我们并没有为得不到C ...

随机推荐

  1. Python3 系列之 编程规范篇

    编码规范 编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入 #--coding:utf-8-- 标识 缩进 统一使用 4 个空格进行缩进 引号 自然语言 使用双引 ...

  2. MVC中使用JQuery方式进行异步请求和使用自带方式进行异步请求

    在MCV中使用异步请求可以很很高效地进行前台和后台的数据传递,在这里,笔者为初学者介绍两种在MVC中常用的异步请求处理方式. 在这里,我们通过在一个页面中放置一个按钮来异步获取当前服务器端的系统时间为 ...

  3. java中int和Integer比较大小

    Integer是int的封装对象,两个对象==比较的是栈的值 Integer a = new Integer(1); Integer b = new Integer(1); a与b存的是Integer ...

  4. canvas-6font.html

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. blfs(systemd版本)学习笔记-配置远程连接显示中文

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 远程连接的lfs系统需要具备以下环境便可在xshell或其他远程终端上面显示中文: 1.lfs主机设置中文编码(需要配置) 2. ...

  6. loadrunner 运行场景-运行时设置

    运行场景-运行时设置 by:授客 QQ:1033553122 A.   查看.修改单个脚本的运行时设置 a)   途径1: Scenario Groups.Scenario Groups Script ...

  7. 【锁】Oracle死锁(DeadLock)的分类及其模拟

    [锁]Oracle死锁(DeadLock)的分类及其模拟 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不 ...

  8. C#语言————第四章 深入C#的String类

    *********类型转换**************** Convert与Parse的区别: Convert可以将任何内置类型转换为其他任何内置类型 XX.Parse:只能将字符串转换为XX类型例如 ...

  9. Docker学习—Docker简介

    什么是Docker Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linu ...

  10. windows任务管理器怎么知道多个IIS网站进程分别对应哪个网站

    摘要: 1.IIS网站对应的进程名一般叫w3wp.exe (windows2008系统为例,其他类似) 2.windows默认的任务管理器只能看到多个同名的进程名w3wp.exe,没法区别分别对应哪个 ...