通过 Intent 发送 Arraylist

2024-01-20

我怎样才能收到定制ArrayList从另一个活动通过Intent?例如,我有这个ArrayList在活动A中:

ArrayList<Song> songs;

我如何在 Activity B 中获取此列表?


首先要理解的是,您使用以下方法将信息从 Activity A 传递到 Activity B:Intent对象,您可以在其中放置“额外内容”。您可以放入的内容的完整列表Intent可以在这里找到:https://developer.android.com/reference/android/content/Intent.html https://developer.android.com/reference/android/content/Intent.html(参见各种putExtra()方法,以及putFooExtra()方法如下)。

由于您正在尝试通过ArrayList<Song>,你有两个选择。

第一个,也是最好的,是使用putParcelableArrayListExtra()。要使用此功能,Song类必须实现Parcelable界面。如果你控制了源代码Song,实施Parcelable相对容易。您的代码可能如下所示:

Intent intent = new Intent(ActivityA.this, ActivityB.class);
intent.putParcelableArrayListExtra("songs", songs);

第二种是使用的版本putExtra()接受一个Serializable object https://developer.android.com/reference/android/content/Intent.html#putExtra(java.lang.String,%20java.io.Serializable)。仅当您不控制源代码时才应使用此选项Song,因此无法实施Parcelable。您的代码可能如下所示:

Intent intent = new Intent(ActivityA.this, ActivityB.class);
intent.putSerializableExtra("songs", songs);

这就是您将数据放入Intent在活动 A 中,如何从Intent在活动B中?

这取决于您在上面选择的选项。如果您选择第一个,您将编写如下所示的内容:

List<Song> mySongs = getIntent().getParcelableArrayListExtra("songs");

如果您选择第二个,您将编写如下所示的内容:

List<Song> mySongs = (List<Song>) getIntent().getSerializableExtra("songs");

第一种技术的优点是它速度更快(就应用程序对用户的性能而言)并且占用更少的空间(就您传递的数据大小而言)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Intent 发送 Arraylist 的相关文章

  • ACTION_VIEW 的 Intent.createChooser 仅显示默认浏览器

    我正在尝试使用 Intent createChooser 显示应用程序选择器对话框 该对话框将列出用户手机中所有可用的网络浏览器 我正在使用下面的代码 Intent browserIntent new Intent Intent ACTIO
  • ImageView 中的全尺寸图像

    我正在尝试在 ImageView 中绘制图像 但我希望它不缩放 并根据需要使用滚动条 我怎样才能做到这一点 现在我只有一个可绘制集作为 XML 中 ImageView 的 android src 这会自动缩放图像以适应屏幕宽度 我读到这可能
  • 无法解析符号 FlutterActivity

    我使用 VCS gt Checkout from Version Control 将 flutter 项目从 github 导入到 Android Studio 中 现在我面临的问题是 Cannot resolve symbol Flutt
  • 将标题设置为操作栏时出现空指针异常

    Error Caused by java lang NullPointerException Attempt to invoke virtual method void android app ActionBar setTitle java
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • 下载图像并显示它

    应用程序的主要目的是下载和显示图像 但是当我尝试启动应用程序时它崩溃了 这是我的代码 private DownloadImageTask task protected void onCreate Bundle savedInstanceSt
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • 如何将单选按钮状态保存到已保存/共享首选项?

    我可以在保存的首选项中保存字符串 但很难保存单选按钮 public class PersonalDetailsf extends Activity private SharedPreferences sharedPreferences pr
  • Locale.getDefault().getCountry() 返回空字符串

    我正在尝试使用国家 地区代码获取用户语言 例如en US es es 但是当我使用Locale getDefault getCountry 它返回空字符串 虽然它给了我正确的语言Locale getDefault getLanguage N
  • 在 Android 中使用 iText 读取或打开 PDF 文件

    我是 Android 应用程序开发新手 使用 iText 我完成了 PDF 创建并在创建的文件上写入 现在我想阅读该 PDF 文件 如何使用 iText 打开或阅读 PDF 文件 例子将是可观的 那么提前 哪个是渲染 PDF 文件的最佳库
  • 当应用程序未运行时如何堆叠 Firebase Cloud Messaging 通知?

    我在用Firebase Cloud Messaging将推送通知从我的服务器发送到我的 Android 应用程序 当应用程序运行时 通知是stacked因为我将它们设置为我的一个组FirebaseMessagingService 这很好 但
  • 如何从SurfaceView绘制到Canvas?

    我正在尝试做简单的画家 问题是Android看起来有三个独立的Canvas并给我它来顺序绘制 我用以下方式制作了用户界面SurfaceView 把霍尔德从中拿走 Override protected void onCreate Bundle
  • 点击监听器的公共类

    我的所有 6 项活动中有 7 个按钮 所有 6 个按钮在所有活动中都具有相同的功能 如何为这 6 个按钮执行通用的单击事件侦听器 您可以创建一个实现 View OnClickListener 的新类 如下所示 public class My
  • OpenGL ES 2.0 屏幕闪烁

    我面临着一个大问题 我正在使用带有 Android 4 0 3 的 Transformer tf101 选项卡 我的应用程序使用自定义 OpenGL ES 2 0 表面 我正在用纹理渲染多个平面 该纹理大约发生变化 每秒 20 次 并通过传
  • WebView 在某些设备上如果不长按则不会滚动

    我有一个 WebView 设置如下 the web view mWebView WebView findViewById R id webView push the url on to the web view mWebView loadU
  • Android应用程序kill事件捕获

    我想在我的应用程序被终止时执行一些操作 可以使用哪种方法来实现此目的 我正在开发 Android 5 0 这个问题的关键在于 您必须了解您的申请是否可以收到任何 当您的应用程序在任何情况下被终止时的额外回调 下面的答案是由德文连线 http
  • Amazon IAP 不会调用 onPurchaseResponse

    我有一个 Android 应用程序 它使用 IAP 我正在发送PurchasingManager initiateGetUserIdRequest 并得到用户识别成功 in onGetUserIdResponse 得到回复后Purchasi
  • Android:获取最新意图

    如何获取发送到活动的最后一个意图 的文档onNewIntent 建议我需要做这样的事情 class MyActivity public void onNewIntent Intent intent setIntent intent reac
  • 绘制大位图时 nSyncAndDrawFrame 速度极慢

    我想用多个大位图优化视差滚动视图 在我的 Nexus 5 上 一切都很顺利 Traceview 转储如下所示 doFrame 方法大约需要 18 毫秒才能完成 但是 当使用我的 Nexus 7 或 Android 6 模拟器 Genymot
  • 尝试使用带有有效购买令牌的 Java Google Play Developer API v3 检索应用内购买信息时出现错误请求(无效值)

    当使用 Java Google Play Developer API 版本 3 并请求有效购买令牌的购买信息时 我收到以下异常 API 调用返回 400 Bad Request 响应以及以下消息 code 400 errors domain

随机推荐

  • 将滚动平均值与数据一起绘制

    我有一个看起来像这样的数据框 delays Worst case Avg case 2014 10 27 2 861433 0 953108 2014 10 28 2 899174 0 981917 2014 10 29 3 080738
  • 检测语言的最佳方法是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 是否可以使用循环创建同一组件的多个实例?

    我有一个组件 Component CAU is port CLK in std logic RESET in std logic START in std logic V DIRECTION in vector 3d P ORIGIN in
  • 如何在 ZF2 中创建表单输入/元素

    编辑 我的主要问题现在变成了 如何以某种干净的方式将带有学说实体管理器的 ServiceManager 交到我的表单 元素和输入类手中 继续阅读以查看完整的帖子 我将尝试在这里举例询问 所以请耐心等待 让我知道哪里做错 对了 或者哪里可以改
  • 是否有用于布尔运算的内置“并行”函数?

    我正在寻找类似的功能pmax and pmin但对于布尔运算 例如 parallel and c TRUE TRUE TRUE TRUE c TRUE TRUE TRUE FALSE c TRUE TRUE FALSE TRUE c TRU
  • 在 C++ 中的结构上使用 memset

    我正在努力为我的工作修复旧代码 目前它是用 C 编写的 他们将静态分配转换为动态分配 但没有编辑 memsets memcmp memcpy 这是我的第一次编程实习 所以我的问题就像新手一样 以下代码是用 C 编写的 但我想用 C 编写 我
  • 使用 Python 更新 terraform (.tf) 文件

    我正在尝试使用 python 更新 terraform 模板 尽管我在尝试查找模块时遇到一些问题 例如使用 PyYAML 来更新 yml 文件 我的目标是更新 git 存储库中存在的 terraform 文件 并创建拉取请求 合并时将触发管
  • 如何使用 SDL 2.0.9 创建 Direct3d 11 渲染器

    在我的项目中我必须使用SDL BLENDOPERATION MAXIMUM via SDL ComposeCustomBlendMode 仅在 SDL 2 0 9 中由 direct3d11 渲染器支持 我有 Windows 8 1 和 G
  • array_multisort() 不修改第一个参数中的数组

    我正在尝试排序 ar1按降序排列的值 ar2 什么也没发生 ar1 array arperc ar2 array arid array multisort ar1 ar2 print r ar1 我缺少什么 如果您想使用以下元素 ar2作为
  • 在 R 中同时记录 stdout + stderr 和 stderr

    我想拥有一切stdout stderr在一个日志文件中 同时stderr在另一个 我怎样才能在 R 中实现这一目标 消息必须保留两个日志中所有消息的时间顺序 例如我有以下代码 options warn 1 cat 1st stdout n
  • React Native 中的快速刷新始终完全重新加载应用程序

    这个问题已经在这里被问过好几次了 这是最相关的 https stackoverflow com questions 59424152 fast refresh that was introduced in react native 0 61
  • 通过 CURL 将 Zip 文件下载到文件结构中的实际 Zip 文件

    我正在尝试使用 RubyGem Curb 构建一个文件下载器 看着这个问题 https stackoverflow com questions 5382149 using gem curb curl to download file 我正在
  • Feign 和 HAL/资源

    我有一个通过 spring data rest 公开资源的服务器 据我所知 它使用 HAL 或 HATEOAS 但是当我尝试将它与 Feign 结合使用时 我似乎无法注册一个被拾取的 Jackson2HalModule 我需要做些什么才能将
  • 如何从 Google 地图平台获取天气数据?

    我有一个位置列表 我想知道是否可以从 Google 地图 API 获取天气数据 当我不得不在 Go 中这样做时 我做了这样的事情 package main import bufio context database sql encoding
  • C++11 中默认函数有什么意义?

    C 11 添加了告诉编译器的功能创建默认实现 http en wikipedia org wiki C 2B 2B0x Defaulting 2Fdeleting of standard functions on C 2B 2B objec
  • 如何在 Rails 中向数据库添加多列

    您好 我刚刚在 RoR 中创建了一个数据库 我现在想再添加 10 列 但是 我不想使用一次仅添加 1 列的以下类型的命令 rails generate migration AddClosing Hrs1ToBusinesses closin
  • ASP.NET奇怪的编译错误

    我不知道我的机器出了什么问题 但有一段时间我从 ASP NET 对于我的所有应用程序 收到以下奇怪的错误 Compilation Error Description An error occurred during the compilat
  • 通过匹配两列的值来过滤数据框

    我在 r 中有一个数据框 我想删除两列中字符串值相等的那些行 我在 r 中使用了 match 函数 但无法获得所需的输出 例如我的数据框是 ALDH1A1 ALDH1A1 ITGA7 CHRNA1 PPP1R9A ACTG1 SRGN SR
  • 无法安装漂亮

    我无法 pip install Prettytable 安装它的最佳选择是什么 sudo pip vvv install prettytable Downloading unpacking prettytable Getting page
  • 通过 Intent 发送 Arraylist

    我怎样才能收到定制ArrayList从另一个活动通过Intent 例如 我有这个ArrayList在活动A中 ArrayList