【问题标题】:Passing arbitrary object in Android Intent在 Android Intent 中传递任意对象
【发布时间】:2016-01-17 16:23:32
【问题描述】:

我希望通过 Android Intent 传递任意对象,我有以下代码:

在我希望发送意图的活动中:

Intent intent = new Intent(containerListActivity, com.uk.jacob.containerdroid.activities.ContainerDetailsActivity.class);
intent.putExtra("container", containers.get(i));
containerListActivity.startActivity(intent);

我希望收到意图的活动:

System.out.println(getIntent().getExtras("container"));

我似乎收到错误“无法解析 putExtra 方法。

containers 本质上是一个 Jackson JSON 映射的 POJO。

【问题讨论】:

标签: java android android-intent


【解决方案1】:

不幸的是,您不能在 Intent 中放置任意对象。必须是ParcelableSerializable

http://developer.android.com/reference/android/content/Intent.html

您可以通过以下几种方式做到这一点:

  1. 让您的自定义类实现Serializable。这可以快速编码,但可能性能不佳。
  2. 让您的自定义类实现Parcelable。这可能需要一些工作。
  3. 使用 Jackson 将您的 container 转换为字符串,然后在使用 getStringExtra 后将其转换回来。

【讨论】:

  • 在android中应该是Parcelable
【解决方案2】:

将您的 JSON 序列化为字符串,然后将其推送到意图。在接收活动中尝试getStringExtra() 从意图对象中提取它。

【讨论】:

  • 这个相当简单的答案
猜你喜欢
  • 1970-01-01
  • 2015-09-20
  • 2012-10-01
  • 1970-01-01
  • 2011-01-21
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 2014-03-12
相关资源
最近更新 更多