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. 对ES6的一次小梳理

    今天闲的没事回顾了ES6的一些知识,下面写的不是特别详细,只是类似于一个大纲,今天我竟然敢睡到八点起床了,md,我膨胀了,赶紧写篇博客压压惊 下面来看看ES6给我们提供了哪些新东西 (1)新的变量声明 ...

  2. python练习:http协议介绍

    一.HTTP协议 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consortium)和Interne ...

  3. Linux 下修改网卡MAC地址

    Linux下修改网卡MAC地址 by:授客 QQ:1033553122 例子:修改网卡接口eth0的mac地址 #停用网卡接口,比如eth0 # ifconfig eth0 down #编辑对应的网卡 ...

  4. Angular基础(三) TypeScript

    一.模仿Reddit a) 运行ng new –ng4angular-reddit创建应用,从随书代码中复制样式文件,新建组件app-root,代码为: 界面可以看到了: b) 对于界面输入的数据,获 ...

  5. JavaScript长时间未操作自动退出登录

    主要是通过mouseover 来监听有没有进行当前页面操作,通过未操作时间和设定退出的时间做比较,从而退出登录. var oldTime = new Date().getTime(); var new ...

  6. Kotlin入门(20)几种常见的对话框

    提醒对话框手机上的App极大地方便了人们的生活,很多业务只需用户拇指一点即可轻松办理,然而这也带来了一定的风险,因为有时候用户并非真的想这么做,只是不小心点了一下而已,如果App不做任何提示的话,继续 ...

  7. ::before和::after伪元素的妙用

    场景: 假如有一天,你的在写一个前端项目,是关于一份点餐商家电话信息表,你啪塔啪塔地写完了,突然间项目经理跑过来找你,要求你在每一个商家的电话号码前都添加一个电话符号,来使得电话号码更直观和页面更美观 ...

  8. Python之groupby

    # -*- coding: utf-8 -*-"""Created on Sat Jun 30 10:09:47 2018测试分组groupby@author: zhen ...

  9. 洗礼灵魂,修炼python(12)--python关键词,包

    关键词 1.什么是关键词: 就是系统已经定义好的一些关键词语法,可以直接使用,很明显的就是在IDE里这些关键词会高亮显示的就是 2.有哪些关键词: 前面我们一直在说关键词,内置函数,到底有哪些关键词对 ...

  10. 统计分页一些sql

    USE [QPTreasureDB] GO /****** Object: StoredProcedure [dbo].[GameStatistics] Script Date: 2018/8/16 ...