You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不同Activity视图/类之间传递变量以避免编写重复代码

Android 跨Activity传递字符串列表实现方案

以下是几种常用的实现方式,可根据你的实际场景选择:

1. Intent 直接传递(最常用,适合小型列表)

这是Android官方提供的标准跨页传参方式,代码实现简单:

  • MainActivity 发送代码示例(Kotlin)
val targetList = arrayListOf("内容1", "内容2", "内容3")
val intent = Intent(this, DetailActivity::class.java)
// 以键值对形式存入列表
intent.putStringArrayListExtra("COMMON_STRING_LIST", targetList)
startActivity(intent)
  • DetailActivity 接收代码示例(Kotlin)
// onCreate生命周期中读取
val receivedList = intent.getStringArrayListExtra("COMMON_STRING_LIST") ?: emptyList()

注意:该方式受Binder事务大小限制,传递的总数据量建议控制在1MB以内,超大列表不推荐使用

2. 单例类缓存(适合中大型列表、多页面复用)

如果列表较大或者多个页面都需要调用,可以用静态单例做临时缓存:

  • 定义缓存类
object CommonDataHolder {
    var sharedStringList: List<String>? = null
}
  • 存入(MainActivity中调用)
CommonDataHolder.sharedStringList = 你的字符串列表实例
  • 读取(DetailActivity中调用)
val useList = CommonDataHolder.sharedStringList ?: emptyList()

注意:页面使用完列表后建议及时将sharedStringList置空,避免不必要的内存占用

3. 资源文件预定义(适合固定不变的公共列表)

如果你的字符串列表是固定的公共资源,不需要动态生成,直接在res/values/arrays.xml中定义即可,所有页面都可以直接读取,完全不需要跨页传递:

  • 先在arrays.xml中添加列表定义
<string-array name="common_string_list">
    <item>内容1</item>
    <item>内容2</item>
    <item>内容3</item>
</string-array>
  • 任意Activity中读取
val list = resources.getStringArray(R.array.common_string_list).toList()

内容的提问来源于stack exchange,提问作者R.R.C.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 07:45:01