【android开发-03】android中Intent的用法介绍
1,Intent的作用
在Android开发中,Intent的使用非常广泛,包括启动Activity、启动Service、发送广播等。是各组件间交互的一种重要方式,他不仅可以指明当前组件想要执行的动作,还可以在不同组件间传递数据。
Intent可以分为2种,显示Intent和隐式Intent。
2,Intent-filter用法说明
在Android中,intent-filter是一种用于过滤Intent的机制,它用于指定一个Activity、Service或BroadcastReceiver可以处理哪些类型的Intent。通过使用intent-filter,可以确保只有符合特定条件或具有特定数据的Intent才能到达目标组件。
intent-filter通常在AndroidManifest.xml文件中声明,用于指定目标组件的用途和可接受的数据类型。以下是一些常见的用法:
在Activity中过滤Intent:
在AndroidManifest.xml文件中,为每个Activity元素添加intent-filter子元素,以指定该Activity可以处理的Intent。例如:
<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>
</activity>
上述代码表示MainActivity可以处理一个具有默认Category的VIEW动作的Intent。
在Service中过滤Intent:
与Activity类似,Service也可以使用intent-filter来过滤Intent。例如:
<service android:name=".MyService"> <intent-filter> <action android:name="com.example.MY_SERVICE" /> </intent-filter>
</service>
上述代码表示MyService可以处理一个具有指定Action的Intent。
在BroadcastReceiver中过滤Intent:
BroadcastReceiver可以通过intent-filter来过滤广播Intent,以便在接收到特定广播时执行特定的操作。例如:
<receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter>
</receiver>
```上述代码表示MyBroadcastReceiver可以处理一个BOOT_COMPLETED动作的广播Intent。
总之,intent-filter是Android中用于过滤Intent的重要机制,它允许开发者指定目标组件可以处理的特定类型的Intent,以确保正确的数据能够传递给目标组件。
3,显示Intent用法和数据传递
以下是一个简单的例子,展示了如何使用Intent启动一个新的Activity。
假设我们有两个Activity:MainActivity和DetailActivity。在MainActivity中,用户可以点击一个按钮来查看DetailActivity,展示关于某个物品的详细信息。
在MainActivity中,我们可以创建一个Intent来启动DetailActivity。以下是一个示例代码:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 创建一个按钮,点击后启动DetailActivity Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 创建一个Intent,指定要启动的Activity为DetailActivity Intent intent = new Intent(MainActivity.this, DetailActivity.class); // 可以在Intent中传递数据给DetailActivity intent.putExtra("item_id", 123); // 启动DetailActivity startActivity(intent); } }); }
}
在DetailActivity中,我们可以从Intent中获取传递的数据,并根据数据展示关于物品的详细信息。以下是一个示例代码:
public class DetailActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); // 从Intent中获取传递的数据 Intent intent = getIntent(); String itemId = intent.getStringExtra("item_id"); // 根据数据展示关于物品的详细信息 // ... }
}
Intent有多个重载函数,其中一个是Intent(Context packageContext,Class<?> cls),第一个参数要求提供一个启动活动的上下文,第二个参数class则是想要启动的目标活动。
使用这种方式来启动活动,Intent的意图非常明显,因此称为显示Intent。
Intent还向下一个活动传递数据,Intent提供了一系列的putExtra方法的重载,可以把我们想要的数据暂存在Intent中。putExtra方法接收2个参数,第一个参数是键,用于后面从Intent取值。第二个参数才是真正传递的数据。然后在下一个活动中通过getIntent方法获取到启动下一个活动的Intent,然后调用getStringExtra,传入相应的键值,就可以获取到数据。这里传递的是字符串,所以调用getStringExtra。如果是整形数据则使用getIntExtra,以此类推。
4,隐式Intent用法
隐式Intent是一种没有指定具体的目标组件的Intent,它需要借助ComponentName或Action、Category等信息来启动目标Activity。以下是使用隐式Intent的步骤:
4.1创建隐式Intent对象,并设置Action和Category等信息。例如:
Intent intent = new Intent(action);
其中,action 是一个字符串类型的动作名称,比如 “android.intent.action.VIEW”。如果需要添加 Category,则可以使用 Categories.add() 方法添加,例如:
intent.addCategory(category);
其中,category 是一个字符串类型的类别名称,比如 “android.intent.category.DEFAULT”。
4.2将隐式Intent传递给Context的startActivity()方法,以启动目标Activity。例如:
startActivity(intent);
4.3如果需要传递数据给目标Activity,则可以使用 putExtra() 方法将数据添加到Intent中。例如:
intent.putExtra(name, value);
其中,name 是一个字符串类型的键名,value 是对应的值。
4.4在目标Activity中,可以通过 getIntent() 方法获取隐式Intent,并从中获取传递的数据。例如:
Intent intent = getIntent();
String name = intent.getStringExtra(name);
其中,name 是传递数据的键名。
使用隐式Intent,不仅可以启动本程序内的活动,还有启动其他程序的活动,使应用程序间共享成为可能。
5,Intent返回数据给上一个活动
在 Android 中,使用 Intent 在活动之间传递数据是非常常见的操作。如果你希望在一个活动中获取另一个活动返回的数据,可以使用 startActivityForResult() 方法来启动目标活动,并在目标活动结束时返回数据给上一个活动。
下面是一个简单的示例,演示了如何在目标活动中获取数据并返回给上一个活动:
1,在上一个活动(例如 MainActivity)中启动目标活动(例如 TargetActivity):
public class MainActivity extends AppCompatActivity { public static final int REQUEST_CODE = 123; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, TargetActivity.class); startActivityForResult(intent, REQUEST_CODE); } }); }
}
2,在目标活动(例如 TargetActivity)中处理数据并返回给上一个活动:
public class TargetActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_target); // 处理数据... String data = "Hello from Target Activity!"; Intent intent = new Intent(); intent.putExtra("data", data); // 将数据添加到 Intent 中 setResult(RESULT_OK, intent); // 设置结果码和 Intent finish(); // 结束当前活动 }
}
3,在上一个活动中重写 onActivityResult() 方法来接收目标活动返回的数据:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE) { // 判断是否是目标活动的返回结果 if (resultCode == RESULT_OK) { // 判断是否成功返回结果 String returnedData = data.getStringExtra("data"); // 从 Intent 中获取返回的数据 // 处理返回的数据... } else { // 处理其他结果码的情况,例如 RESULT_CANCELED 或其他自定义结果码 // 处理取消或错误的情况... } } else { // 处理其他请求码的情况,例如其他活动的返回结果 // 处理其他请求码的情况... }
}
相关文章:
【android开发-03】android中Intent的用法介绍
1,Intent的作用 在Android开发中,Intent的使用非常广泛,包括启动Activity、启动Service、发送广播等。是各组件间交互的一种重要方式,他不仅可以指明当前组件想要执行的动作,还可以在不同组件间传递数据。 Intent可以…...
Java中时间工具详解:java.time包的应用
引言 时间在软件开发中是一个至关重要的概念,而Java自从引入java.time包后,提供了更加强大和灵活的时间处理工具。本文将深入介绍java.time包中的一些常用时间工具,帮助你更好地处理日期和时间的操作。 1. LocalDate - 处理日期 LocalDate…...
mysql 日志分析
程序启动标志 可以直接全局搜索,查看启动了几次 可以看到总共11次,当前是第2次 如何判断mysql是正常关闭,手动启动的 下图中启动之前出现 Shutdown complete打印说明启动之前是正常关闭的...
网络运维与网络安全 学习笔记2023.11.30
网络运维与网络安全 学习笔记 第三十一天 今日目标 实现AP自动注册、配置WLAN业务参数、无线终端通过wifi互访 实现AP自动注册 项目背景 企业内网的大量AP已经通过DHCP的方式获得IP地址 为了实现后期大量AP的统一管理,希望通过AC实现集中控制 在AC设备上&#…...
Perplexity 推出全新大型在线语言模型
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
python中的函数定义
默认参数 注: 在Python中,print(x, and y both correct)是一条打印语句(print statement),用于将一条消息输出到控制台或终端。它的作用是将变量x的值和字符串and y both correct同时输出到屏幕上。 在这个语句中&…...
信贷销售经理简历模板
这份简历内容,以信贷销售经理招聘需求为背景,我们制作了1份全面、专业且具有参考价值的简历案例,大家可以灵活借鉴。 信贷销售经理简历模板在线编辑下载:百度幻主简历 求职意向 求职类型:全职 意向岗位ÿ…...
js事件流与事件委托/事件代理
1 事件流 事件流分为两步,一是捕获,二是冒泡 1.1 捕获概念 捕获就是从最高层一层一层往下找到最内部的节点 1.2 冒泡概念 捕获到最小节点后,一层一层往上返回,像是气泡从最底部往上冒一样,由于水深不同压强不同&…...
代码随想录算法训练营第三十八天| 509 斐波那契数 70 爬楼梯 746 使用最小花费爬楼梯
509 斐波那契数 class Solution {public int fib(int n) {int f[] new int[n 5];f[0] 0;f[1] 1;for(int i 2;i < n;i){f[i] f[i - 1] f[i - 2];}return f[n];} } 时间复杂度O(n) 空间复杂度O(n) 70 爬楼梯 class Solution {public int climbStairs(i…...
windows 此系统禁止运行脚本报错处理
windows 此系统禁止运行脚本报错处理 start 在命令行中运行执行的脚本,运行原理可以参考文章 《》本文主要介绍,如何处理window默认的对脚本运行的限制。 详细说明 出现报错如下: 主要原因就是系统默认禁止了在 powershell 环境下某些脚…...
西南科技大学数字电子技术实验一(数字信号基本参数与逻辑门电路功能测试及FPGA 实现)FPGA部分
一、 实验目的 1、掌握基于 Verilog 语言的 diamond 工具设计全流程。 2、熟悉、应用 Verilog HDL 描述数字电路。 3、掌握 Verilog HDL 的组合和时序逻辑电路的设计方法。 4、掌握“小脚丫”开发板的使用方法。 二、 实验原理 与门逻辑表达式:Y=AB 原理仿真图: 2 输入…...
List系列集合
List系列集合特点:有序,可重复,有索引 ArrayList:有序,可重复,有索引 LinkedList:有序,可重复,有索引 (底层实现不同!适合的场景不同!…...
SQL 金额数值转换成中文大写
需求:将金额转换成中文大写格式填入单据合计行: _佰_拾_万_仟_佰_拾_元_角_分 1234567.89 壹佰贰拾叁万肆仟伍佰陆拾柒元捌角玖分 1.函数转换 drop function n2C;CREATE FUNCTION n2C (num numeric(14,2)) RETURNS VARCHAR(20) AS BEGIN …...
在Linux上安装KVM虚拟机
一、搭建KVM环境 KVM(Kernel-based Virtual Machine)是一个基于内核的系统虚拟化模块,从Linux内核版本2.6.20开始,各大Linux发行版就已经将其集成于发行版中。KVM与Xen等虚拟化相比,需要硬件支持的完全虚拟化。KVM由内…...
软件设计之原型模式
原型模式是从一个对象再创建另一个可定制的对象,而且不需要知道任何创建的细节。拷贝分浅拷贝和深拷贝。浅拷贝无法拷贝引用对象。在面试的时候,我们会投多家公司,根据岗位的不同我们会适当调整。使用原型模式可以快速达到需求,下…...
Android之高级UI
系统ViewGroup原理解析 常见的布局容器: FrameLayout, LinearLayout,RelativeLayoout,GridLayout 后起之秀:ConstraintLayout,CoordinateLayout Linearlayout Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {if (mOrientation …...
Qt:解决跨线程调用socket/IO类,导致报错的问题
Qt有很多IO相关的类,比如说QTcpSocket、QFile,总的来说,在Qt的框架内使用,还是非常方便的。 但是用过其他框架IO类的人,可能有一个很不习惯,就是Qt的所有IO类,都不推荐或者不可以跨线程操作&…...
长沙电信大楼火灾调查报告发布:系烟头引发。FIS来护航安全
近日,长沙电信大楼的火灾调查报告引起广泛关注。调查发现,火灾是由未熄灭的烟头引发,烟头点燃了室外平台的易燃物,迅速蔓延至整个建筑。这起悲剧再次提醒我们,小小的疏忽可能酿成大灾难。但如果我们能及时发现并处理这…...
【Web系列二十七】Vue实现dom元素拖拽并限制移动范围
目录 需求 拖拽功能封装 使用拖拽功能 vite-env.d.ts main.ts test.vue 需求 dom元素拖拽并限制在父组件范围内 拖拽功能封装 export const initVDrag (vue) > {vue.directive(drag, (el) > {const oDiv el // 当前元素oDiv.onmousedown (e) > {let target…...
【IEEE独立出版】2024第四届神经网络、信息与通信工程国际学术会议(NNICE 2024)
2024第四届神经网络、信息与通信工程国际学术会议(NNICE 2024) 2024 4th International Conference on Neural Networks, Information and Communication Engineering 2024第四神经网络、信息与通信工程国际学术会议(NNICE 2024࿰…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
