Android学习之基础知识四-Activity活动4讲(Intent传递数据)
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传递数据)的更多相关文章
- Android学习之基础知识四-Activity活动3讲(Intent的使用)
主活动名称FirstActivity.java改为了MenuTest.java 一.什么是Intent: 1.Intent是Android程序中各组件之间进行交互的重要方式,不仅可以指明当前组件想要进 ...
- Android学习之基础知识四-Activity活动6讲(体验Activity的生命周期)
一.体验活动的生命周期的执行 代码组成: 1.三个Java类:MainActivity.java.NormalActivity.java.DialogActivity.java 2.三个布局文件:ac ...
- Android学习之基础知识四-Activity活动5讲(Activity的生命周期)
一.返回栈 1.Android是通过任务(Task)来管理活动,一个任务就是一个返回栈内所有活动的集合. 2.返回栈是一个后进先出的数据结构,每启动一个新的活动,该活动就会覆盖原来的活动,位于栈顶位置 ...
- Android学习之基础知识四-Activity活动7讲(活动的启动模式)
在实际的项目开发中,我们需要根据特定的需求为每个活动指定恰当的启动模式.Activity的启动模式一共有4种:standard.singleTop.singleTask.singleInstance. ...
- Android学习之基础知识四-Activity活动2讲
一.在活动(activity)中添加Toast显示: 1.Toast作用:Android系统提供的一种非常好的提醒方式,将一些短小的信息提供给用户,这些信息会在一段时间后自动消失,不会占用任何屏幕空间 ...
- Android学习之基础知识四-Activity活动1讲
一.活动(Activity)的基本用法: 1.手动创建活动FirstActivity(java源码): A.Android Studio在一个工作区间只允许打开一个项目,点击:File--->C ...
- Android学习之基础知识四-Activity活动8讲(活动的灵活运用)
一.判断当前是在哪个活动 1.我们还是接着上一讲的代码,首先创建一个Java类:BaseActivity.java.这个类我们不作为一个活动,也不在AndroidManifest.xml中注册,它只是 ...
- Android基础知识04—Activity活动之间传递数据
------活动之间传递数据------ 向下一个活动传递数据: Intent中提供了一系列的putExtra()方法,可以把数据暂存到Intent中,启动另一个活动的时候就可以取出来. 代码: (存 ...
- Android学习之基础知识十六 — Android开发高级技巧的掌握
一.全局获取Context的技巧 前面我们很多地方都使用到了Context,弹出Toast的时候.启动活动的时候.发送广播的时候.操作数据库的时候.使用通知的时候等等.或许目前来说我们并没有为得不到C ...
随机推荐
- 使用iconv进行编码gb2312转utf8 转码失败的坑
iconv 编码gb2312转utf8 转码失败的坑 使用背景 项目中使用thrift进行C#程序调用c++接口,其中的协议是通过json进行传输的,由于默认thrift使用utf8进行传输,而C#和 ...
- python 类函数,实例函数,静态函数
一.实现方法 class Function(object): # 在类定义中定义变量 cls_variable = "class varibale" def __init__(se ...
- sqlserver配置实践
对于一套新的sqlserver服务器,我们首先要对它做一些必要的优化配置,确保在生产上比较长的时间段内可以比较稳定的,良好的运行. 新的sqlserver服务器上安装的sqlserver版本,可以选择 ...
- vue 环境的搭建及初始化项目
其实超级简单,虽然网上很多,但是我顺便记录下相当于做笔记吧 1nodejs 的安装, 在node官网下载,点击安装,安装的时候最好选择路径在d盘 2设置环境变量 我的电脑-->属性-->系 ...
- .Net Core 2.0 生态(2).NET Core 2.0 特性介绍和使用指南
.NET Core 2.0发布日期:2017年8月14日 前言 这一篇会比较长,介绍了.NET Core 2.0新特性.工具支持及系统生态,现状及未来计划,可以作为一门技术的概述来读,也可以作为学习路 ...
- C#重试公用类
//Retry机制 public static class RetryExecutor { /// <summary> /// 重试零个参数无返回值的方法 /// </summary ...
- 洗礼灵魂,修炼python(51)--爬虫篇—变色龙般的伪装
变色龙原理 变色龙这种动物想必大家都了解,它们会根据周遭环境的局势来改变自己的颜色,伪装自己. 那么爬虫有这种技能吗?当然是有的,先不着急说这个问题. 从上一篇开始,你有没有想过,站在网站管理的角度, ...
- Excel函数进阶
#笔记:为了方便自己以后查找,以便随时随地能查看.形成系统化学习! 查找引用函数 ------------------包含----------Vlookup函数(if数组).Hlookup函数.loo ...
- Sql Server中查询当天,最近三天,本周,本月,最近一个月,本季度的数据的sql语句
--当天: --最近三天: --本周: select * from T_news WHERE (DATEPART(wk, addtime) = DATEPART(wk, GETDATE())) AND ...
- sql server 数据导出(入)方法总结
我们都知道日常在面对数据需求时需要导出数据,比较少量的数据导出我们一般是通过查询后另存即可,当面对数据量比较大的时候我们应该怎么处理?我搜索总结一些几个方法:1.bcp 导出.2.数据库本身自带的导入 ...