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的代码:

  1. public class FirstActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(@Nullable Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.first_layout);
  6. Button button = (Button) findViewById(R.id.button1);
  7. button.setOnClickListener(new View.OnClickListener() {
  8. @Override
  9. public void onClick(View view) {
  10. Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
  11. startActivityForResult(intent, 1);
  12. /*
  13. 1、startActivityForResult()方法:当一个活动销毁时返回一个数据给上一个活动,它也可以开启一个活动,它传入两个参数
  14. 第一个参数:intent
  15. 第二个参数:请求码,唯一即可,用于判断数据的来源
  16. 2、使用startActivityForResult()方法来开启SecondActivity,当SecondActivity活动销毁过后,会调用上一个活动的onActivityResult()方法,
  17. 即这里的FirstActivity中的onActivityResult()方法,因此我们要在FirstActivity活动中重写onActivityResult()方法。
  18. onActivityResult()这个方法的作用是得到返回的数据。
  19. */
  20. }
  21. });
  22. }
  23.  
  24. @Override
  25. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  26. switch (requestCode) {
  27. case 1:
  28. if (resultCode == RESULT_OK) {
  29. String returnData = data.getStringExtra("return_extra");
  30. Log.d("FirstActivity", returnData);
  31. /*
  32. 1、该方法中传入三个参数:
  33. requestCode:请求码
  34. resultCode:处理结果
  35. data:携带数据的Intent
  36. */
  37. }
  38. break;
  39. default:
  40. break;
  41. }
  42. }
  43. }

SecondActivity.java中的代码:

  2、运行效果:

点击button1:进入SecondActivity活动界面

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

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

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

  1. public class SecondActivity extends AppCompatActivity {
  2. @Override
  3. protected void onCreate(@Nullable Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.second_layout);
  6. Button button=findViewById(R.id.button2);
  7. button.setOnClickListener(new View.OnClickListener() {
  8. @Override
  9. public void onClick(View view) {
  10. Intent intent=new Intent();
  11. intent.putExtra("return_extra","Button FirstActivity");
  12. setResult(RESULT_OK,intent);
  13. finish();
  14. /*
  15. 1、这里的Intent仅仅是传递数据而已,没有任何意图,通过putExtra()方法把数据存放在intent中
  16. 2、setResult()方法:这个方法很重要,是专门用于向上一个活动返回数据的,这个方法有两个参数:
  17. 第一个参数:用于向上一个活动返回数据的处理结果,RESULT_OK 、 RESULT_CANCELED两种
  18. 第二个参数:返回的数据,将带有数据的intent返回过去
  19. 3、finish():销毁活动
  20. */
  21. }
  22. });
  23. }
  24. @Override
  25. public void onBackPressed() {
  26. Intent intent=new Intent();
  27. intent.putExtra("return_extra","Back FirstActivity");
  28. setResult(RESULT_OK,intent);
  29. finish();
  30. }
  31. }

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. 前端打包文件在 nginx 上 403 的解决办法

    遇到的问题表现出来就是如题所述,因此作为题目. 我们知道,前端有很多方便的构建和打包工具,如 webpack 等,通常我们会把前端文件打包到dist目录下,部署到服务器上,如 nginx 等. 这次遇 ...

  2. docker-使用Dockerfile制作镜像

    最近项目中有使用docker,组内做了关于docker的培训,然后自己跟着研究了一下,大概了解如何使用.我是基于tomcat镜像制作(不需要安装jdk,配置环境变量),基于centos镜像制作需要安装 ...

  3. Visual Studio 2015速递(4)——高级特性之移动开发

    系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...

  4. SGCC_UAP启动停留在initializing java tooling(1%)

    找到uap的安装目录,eclipse文件夹下的eclipse.ini,用EditPlus打开,添加下面两行 -vmC:\Program Files\Java\jdk1.6.0_43\bin\ 在-vm ...

  5. React JS和React-Native学习指南

    自己在学习React-Native过程中整理的一份学习指南,包含 教程.开源app和资源网站等,还在不断更新中.欢迎pull requests! React-Native学习指南本指南汇集React- ...

  6. [iOS] WSHorizontalPickerView 图片水平滚动封装

    之前这篇文章传送门本来是记录自己练手的demo的,后来很多人来问我要代码.今天就抽时间封装了一下,没有考虑太多情况,等我有空再去仔细考虑吧. 代码在:Github 用法很简单,创建对象,设置数据源,记 ...

  7. (网页)Java程序员们最常犯的10个错误(转)

    转自CSDN: 1.将数组转化为列表 将数组转化为一个列表时,程序员们经常这样做: List<String> list = Arrays.asList(arr); Arrays.asLis ...

  8. windows下安装Erlang

    由于RabbitMQ是用Erlang编写的,因此需要先安装Erlang环境,建议安装的版本新一点.下载地址点我试试 我这里下载的V20.3 x64版本,下载后点击开始安装,基本是一路next(默认设置 ...

  9. Echarts地图展示及属性分析

    Echarts,一个效果非常棒的可视化库,可以生产各种图表,动态展示,附上官方网址:http://www.echartsjs.com/index.html 之前带本科实习时有同学用过,狗哥的博客也用这 ...

  10. [转]Docker容器可视化监控中心搭建

    [原文链接]https://www.jianshu.com/p/9e47ffaf5e31?hmsr=toutiao.io&utm_medium=toutiao.io&utm_sourc ...