当前位置: 首页 > 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"))

 

相关文章:

  • spark与hadoop的区别
  • Flutter 状态管理 Riverpod
  • 【Linux】多线程任务模块
  • 【Linux篇】轻松搭建命名管道通信:客户端与服务器的互动无缝连接
  • 卷积神经网络--手写数字识别
  • day33和day34图像处理OpenCV
  • 教育行业网络安全:守护学校终端安全,筑牢教育行业网络安全防线!
  • FastGPT Docker Compose本地部署与硅基流动免费AI接口集成指南
  • 【计算机网络】第五章 局域网技术
  • GPT,Genini, Claude Llama, DeepSeek,Qwen,Grok,选对LLM大模型真的可以事半功倍!
  • 形象理解华为云物联网iotDA开发流程
  • 批量导出多个文件和文件夹名称与路径信息到Excel表格的详细方法
  • AgentGPT开源程序可以在浏览器中组装、配置和部署自主人工智能代理
  • 高并发场景下的淘宝 API 开发实践:商品数据实时采集与性能优化
  • 修改IP地址能否精确到地级市的县?——全面解析
  • 基于ueditor编辑器的功能开发之重写ueditor的查找和替换功能,支持滚动定位
  • ts中的类型
  • CSS零基础入门笔记:狂神版
  • 前端实战-AJAX
  • ubuntu 22.04 安装和配置 mysql 8.0,设置开机启动
  • 动力电池、风光电设备退役潮来袭,国家队即将推出“再生计划”
  • 上海又现昆虫新物种:体长仅1.5毫米,却是凶猛的捕食者
  • 澎湃思想周报|哈佛与特朗普政府之争;学习适应“混乱世”
  • 为什么要研制大型水陆两栖飞机?AG600总设计师给出答案
  • “云南舞蹈大家跳”暨牟定“三月会”下周举行,城际公交免票
  • 融创中国披露二次境外债重组方案:总规模约95.5亿美元债全额转股权,孙宏斌部分受限股票6年内不得处置