当前位置: 首页 > news >正文

Activity之间交互

Backgroud:

想要实现Activity之间的交互,需要用到intent工具

本博客中所有第二Activity均为SecActivity,需要预先进行创建

本博客所使用的开发语言为Kotlin

使用intent调用Activity

显式调用

val intent = Intent(this, SecActivity::class.java)
startActivity(intent)

 隐式调用

一般调用

1. 在注册文件AndroidManifest.xml中为被调用Activity添加响应的action与category

<activity android:name=".SecActivity"android:exported="true"><intent-filter><action android:name="com.example.activitytest.ACTION_START" /><category android:name="android.intent.category.DEFAULT" /></intent-filter>
</activity>

2. 在MainActivity中调用

//这里由于SecActivity所用category为默认值,故不需要另行添加
val intent = Intent("com.example.activitytest.ACTION_START")
startActivity(intent)

 每个intent只能指定一个action,却可以指定数个category

 自定义category调用

<activity android:name=".SecActivity"android:exported="true"><intent-filter><action android:name="com.example.activitytest.ACTION_START" /><category android:name="com.example.activitytest.MY_CATEGORY" /></intent-filter>
</activity>
val intent = Intent("com.example.activitytest.ACTION_START")
intent.addCategory("com.example.activitytest.MY_CATEGORY")
startActivity(intent)

 Uri调用

//这段代码会调用默认浏览器打开设定的网址
val intent = Intent(Intent.ACTION_VIEW)
intent.data = Uri.parse("https://www.baidu.com")
startActivity(intent)

向第二Activity传递数据

//MainActivity向SecActivity传递数据
val intent = Intent(this, SecondActivity::class.java)
intent.putExtra("USER", message)
startActivity(intent)
//SecActivity获取从MainActivity传递而来的数据
val name = intent.getStringExtra("USER")
val textView = findViewById<TextView>(R.id.secTxt)
textView.text = "This is the second activity!\nWelcome $name!"

向调用Activity返回数据

调用Activity:

//注册回调
private val resultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()
) { result ->if (result.resultCode == RESULT_OK) {val data = result.dataviewText.text = data?.getStringExtra("key")}
}//在主函数中调用SecActivity
val intent = Intent(this, SecdActivity::class.java)
resultLauncher.launch(intent)

被调用Activity:

//设置返回数据
setResult(RESULT_OK, Intent().putExtra("key", "This\'s returnData"))

 

http://www.xdnf.cn/news/69841.html

相关文章:

  • unity动态骨骼架设+常用参数分享(包含部分穿模解决方案)
  • 22. git show
  • MyBatis-Plus 实战:优雅处理 JSON 字段映射(以 JSONArray 为例)
  • 12个领域近120个典型案例:2024年“数据要素X”大赛典型案例集(附下载)
  • 网络编程4
  • L1-106 偷感好重 - java
  • vision transformer图像分类模型结构介绍
  • 运维:概念、模式与硬件基础
  • 【MySQL】详细介绍(两万字)
  • 反射内存网技术应用于数控系统
  • Shell脚本-四则运算符号
  • 软件测试入门知识详解
  • 使用Unity Cache Server提高效率
  • 二分查找、分块查找、冒泡排序、选择排序、插入排序、快速排序
  • Maven编译打包
  • MySQL的ACID特性
  • 抽象类的特点
  • 面经-浏览器/网络/HTML/CSS
  • 单页面应用的特点,什么是路由,VueRouter的下载,安装和使用,路由的封装抽离,声明式导航的介绍和使用
  • 数据结构之二叉树
  • 线性回归之多项式升维
  • TDengine 存储引擎设计
  • map和set的使用
  • PHP日志会对服务器产生哪些影响?
  • 安恒安全渗透面试题
  • [PTA]2025 CCCC-GPLT天梯赛-这不是字符串题
  • 29-JavaScript基础语法(函数)
  • JavaScript 中的单例模式
  • AI Agent开发第34课-用最先进的图片向量BGE-VL实现“图搜图”-下
  • C# 的 字符串插值($) 和 逐字字符串(@) 功能