Android Studio(意图Intent)
前言
意图的作用:页面的跳转(从一个页面跳转到另一个页面)。
意图的创建:需要哪些参数?首先,从哪个页面跳转到哪个页面;其二,跳转到另一个页面需要携带数据吗。
下面介绍顺序:简单意图、携带数据、
简单意图
所谓简单意图,即只需要进行页面跳转不携带数据 。
Intent intent = new Intent();
intent.setClass(MainActivity.this,SecActivity.class);
startActivity(intent);// setClass(Context,Class)
// Context:跳转前的所在页面上下文
// Class:目标要跳转的页面的class
携带数据
下面就是intent对象传数据的相关方法,可以看到我们可以传入很多类型的数据去满足我们的业务需求。下面也将举几个具体的例子。
intent数据传递
| 方法 | 数据类型 |
|---|---|
| putExtra(String name, boolean value) | 布尔型 |
| putExtra(String name, byte value) | 字节型 |
| putExtra(String name, char value) | 字符型 |
| putExtra(String name, short value) | 短整型 |
| putExtra(String name, int value) | 整型 |
| putExtra(String name, long value) | 长整型 |
| putExtra(String name, float value) | 浮点型 |
| putExtra(String name, double value) | 双精度浮点型 |
| putExtra(String name, String value) | 字符串型 |
| putExtra(String name, CharSequence value) | 字符序列型 |
| putExtra(String name, Serializable value) | 可序列化对象 |
| putExtra(String name, Parcelable value) | Parcelable 对象 |
| putExtra(String name, Bundle value) | Bundle 对象 |
| putStringArrayListExtra(String name, ArrayList<String> value) | 字符串列表 |
intent数据获取
先介绍页面窗口获取意图的方法,毕竟只有拿到意图我们才能使用intent对象的相关方法拿到传递到当前页面窗口的数据。
Intent intent = getIntent();
这个getIntent()方法是所有窗口页面对象都有的(在内部可以直接调用),因为窗口页面对象都extends AppCompatActivity。
如果没有任何页面传递intent(没有页面跳转),那么getIntent()==null;只有当前页面窗口确实是跳转的目的页面,调用getIntent()才会获取到Intent对象。
| 方法 | 数据类型 |
|---|---|
| getBooleanExtra(String name, boolean defaultValue) | 布尔型 |
| getByteExtra(String name, byte defaultValue) | 字节型 |
| getCharExtra(String name, char defaultValue) | 字符型 |
| getShortExtra(String name, short defaultValue) | 短整型 |
| getIntExtra(String name, int defaultValue) | 整型 |
| getLongExtra(String name, long defaultValue) | 长整型 |
| getFloatExtra(String name, float defaultValue) | 浮点型 |
| getDoubleExtra(String name, double defaultValue) | 双精度浮点型 |
| getStringExtra(String name) | 字符串型 |
| getCharSequenceExtra(String name) | 字符序列型 |
| getSerializableExtra(String name) | 可序列化对象 |
| getParcelableExtra(String name) | Parcelable 对象 |
| getBundleExtra(String name) | Bundle 对象 |
| getStringArrayListExtra(String name) | 字符串列表 |
String类型
// 传递String数据(省略意图创建配置)
intent.putExtra("name","joden");// 获取String数据
Intent intent = getIntent(); // 获取窗口意图对象
String getName = intent.getStringExtra("name");
ArrayList<String>类型
// 发送
List<String> cuisineIds = new ArrayList<String>(); // 省略添加数据操作
intent.putStringArrayListExtra("sendCuisineIds", (ArrayList<String>) cuisineIds);// 获取
List<String> cuisineIds = new ArrayList<String>();
cuisineIds = intent.getStringArrayListExtra("sendCuisineIds");
List<Object>类型
// 1. 首先需要引入Serializable接口,使对象可序列化
public class OrderItem implements Serializable// 2. 意图添加Serializable型数据
intent.putExtra("sendOrderItems", (Serializable) orderItems);// 3. 接受页面获取Serializable型数据
List<OrderItem> orderItemList = new ArrayList<>();
orderItemList = (List<OrderItem>) intent.getSerializableExtra("sendOrderItems");
意图回传
什么是意图回传?
界面1发送intent1=>界面2获取intent1=>界面2发送intent2=>界面1获取intent2
这个过程好像是“下发命令”,要保证:命令的接受者正确性、命令下发者确定接受者已经完成命令。
当然,如果我们自己要实现也是可以的,但内部已有相关方法实现,所以我们学习使用即可,逻辑也很简单。
// 1. start to skip page with intent and seek for a Result (MainActivity.java)
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
this.startActivityForResult(intent,666); // 2. pass back intent (SecondActivity.java)
Intent intent = new Intent();
intent.putExtra("username","joden");
setResult(888,intent);
finish();// 3. deal with the intent data is passed back (MainActivity.java)
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if(requestCode==666&&resultCode==888){String getMsg = data.getStringExtra("username");Toast.makeText(this,getMsg,Toast.LENGTH_SHORT).show();}
}
后言
下一节将介绍数据存储的相关知识。
相关文章:
Android Studio(意图Intent)
前言 意图的作用:页面的跳转(从一个页面跳转到另一个页面)。 意图的创建:需要哪些参数?首先,从哪个页面跳转到哪个页面;其二,跳转到另一个页面需要携带数据吗。 下面介绍顺序&#x…...
Bean作用域
从笔者之前的博客,我们可以看出 Spring 是⽤来读取和存储 Bean,因此在 Spring 中 Bean 是最核⼼的操作 资源,所以接下来我们深⼊学习⼀下 Bean 对象:Bean作用域! 限定程序中变量的可用范围叫做作用域!或者…...
YOLOV5----修改损失函数-SE
主要修改yolo.py、yolov5s.yaml及添加SE.py 一、SE.py import numpy as np import torch from torch import nn from torch.nn import initclass SEAttention(nn.Module):def __init__(self, channel=512...
Mybatis(一)
1. Mybatis简介 MyBatis下载地址 1.1 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github…...
使用Go构建一个Postgres流平台
使用 Go 通道从拉推模型转向更高效的流方法。这通过重叠拉取和推送阶段来提高性能,减少总体处理时间和延迟。 Go通道提供数据同步、资源管理和并发处理。它们允许 goroutine 安全地通信和交换数据。这些源实现了每秒 10-12k 事务的吞吐量,最小延迟为 1-…...
QT基础与细节理解
前言 本博客旨在记录QT学习过程中的一些细节知识理解,由于问题的产生并非成体系,所以前期的记录可能会无序一些。烦请读者参阅目录进行快速的问题定位与跳转 QT基础与细节理解 前言正文部分QT基础1:正确理解: QWidget(parent), ui(new Ui::u…...
【MySQL数据库】 六
本文主要介绍了数据库原理中数据库索引和事务相关概念. 一.索引 在查询表的时候,最基本的方式就是遍历表,一条一条筛选 . 因此,就可以给这个表建立索引,来提高查找的速度 比如,按照id建立索引 在数据库上额外搞一个空间维护一些id 相关的信息, id:1 表的某个位置 id:2 …...
微信总提示空间不足怎么办?三个方法随心选!
微信显示空间不足会给用户带来很多困扰,比如影响手机的正常使用,占用大量存储空间,导致手机运行缓慢,没法分享图片和视频,影响我们的社交交流。下面提供了一些简单实用的方法。 方法一:清理微信缓存 1、打…...
C语言每日一题(27)链表中倒数第k个结点
牛客网 链表中倒数第k个结点 题目描述 描述 输入一个链表,输出该链表中倒数第k个结点。 思路分析 这是一道经典的快慢指针题,fast和slow最开始都指向头结点,对于输入值k,先让快指针fast先走k步,之后再让两个指针一…...
pdf转word
1、pip install pdf2docx 2、 from pdf2docx import Converterpdf_filerH:\测试.pdf docx_filerH:\测试_word.docxcvConverter(pdf_file) cv.convert(docx_file,start0,endNone) cv.close()会根据H目录中的pdf,在本目录自动生成相应的word...
LeetCode热题100——二叉树
二叉树 1. 二叉树中序遍历 1. 二叉树中序遍历...
【Linux】文件重定向以及一切皆文件
文章目录 前言一、重定向二、系统调用dup2三、重定向的使用四、一切皆文件 前言 Linux进程默认情况下会有3个缺省打开的文件描述符,分别是标准输入0, 标准输出1, 标准错误2, 0,1,2对应的物理设备一般是:键盘ÿ…...
Go进阶之rpc和grpc
文章目录 Go环境安装1)windows2)linux go语言编码规范1.1 包名:package1.2 ⽂件名1.3 结构体命名1.4 接⼝命名1.5 变量命名1.6 常量命名2.1 包注释2.2 结构(接⼝)注释2.3 函数(⽅法)注释2.4 代码…...
润和软件HopeStage与奇安信网神终端安全管理系统、可信浏览器完成产品兼容性互认证
近日,江苏润和软件股份有限公司(以下简称“润和软件”)HopeStage 操作系统与奇安信网神信息技术(北京)股份有限公司(以下简称“奇安信”)终端安全管理系统、可信浏览器完成产品兼容性测试。 测试…...
模态对话框和非模态对话框
创建到堆区这样非模态对话框就不会一闪而过 .exec使程序进入阻塞状态 ()[]{}lambda表达式 55号属性可以在对话框关闭的时候将堆区的内存释放掉从而防止内存泄露...
【算法与数据结构】39、LeetCode组合总和
文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:这道题当中数字可以多次使用,那么我们在递归语句当中不能直接找下一个candidate的元素&…...
行政大厅满意度调查内容
行政大厅满意度调查的内容应该涵盖各个方面,以全面了解公众对行政大厅服务的满意度和意见。以下是可能包含在行政大厅满意度调查中的内容: 服务态度: 行政大厅工作人员的友好程度和专业水平。是否受到尊重和礼貌的待遇。 办事效率…...
WordPress页脚配置备案号
进入后台管理页面 后台管理页面地址一般是:域名/wp-admin 在指定位置加入代码 点击外观 -> 主题文件编辑器 在右侧的文件中选择 footer.php,[注意:上方的主题需要是你自己选择的对应的主题]在 </footer>标签这一行的上一行中加入代码 <di…...
时间序列预测模型实战案例(十)(个人创新模型)通过堆叠CNN、GRU、LSTM实现多元预测和单元预测
本文介绍 本篇博客为大家讲解的是通过组堆叠CNN、GRU、LSTM个数,建立多元预测和单元预测的时间序列预测模型,其效果要比单用GRU、LSTM效果好的多,其结合了CNN的特征提取功能、GRU和LSTM用于处理数据中的时间依赖关系的功能。通过将它们组合在…...
【有源码】基于uniapp的农场管理小程序springboot基于微信小程序的农场检测系统(源码 调试 lw 开题报告ppt)
💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
