gpt4 book ai didi

java - 如何将包含 parcelable 类 'A' 实例的 Parcelable 类 'B' 的实例写入 'B' 类的 Parcel

转载 作者:行者123 更新时间:2023-11-29 20:50:38 27 4
gpt4 key购买 nike

我在为我的 Android 应用程序使用 parcelables 时遇到了一些问题。
我有一个名为 Transport 的自定义类,其中包含一堆 RoutePoint - 从文件加载并保存在数组中的实例。

两个类 implements Parcelable ,因为我想传递 Transport对象,其中包含 RoutePoint多个 Activity 之间的对象。

这带来了一个问题,因为每个 RoutePoint 的内部对象,我有一个 Transport用于告知哪个传输是 RoutePoint 的父对象的对象.

假装我有这些类(class):

Transport :

public class Transport implements Parcelable
{
private RoutePoint[] points;

public Transport()
{
// Here the array is initialized
}

// Methods needed because of the Parcelable interface
}

RoutePoint :

public class RoutePoint implements Parcelable
{
private Transport parent;

public RoutePoint(Transport parent)
{
this.parent = parent;
}

// Methods needed because of the Parcelable interface
}

Transport类被写入 Parcel , 我写了所有 RoutePoint也是从阵列到包裹。

RoutePoint类被写入 Parcel ,我写父Transport也到包裹。

这会导致“递归调用”,以及 StackOverflowException :

  1. Transport写一个 RoutePointParcel .
  2. RoutePoint写父TransportParcel .
  3. 家长Transport写一个 RoutePointParcel .
  4. 回到第 2 步。

我想知道我怎样才能解决这个问题,并通过 Transport在 Activity 之间上课,并传递 parent RoutePoint 中的对象以某种方式上课。

最佳答案

如果所有 RoutePoint 实例始终包含在 Transport 实例中,您可以通过不序列化 RoutePoint.parent 来修复它,而是在反序列化 Transport 时设置它。

因此,当您反序列化 Transport 实例时,反序列化 RoutePoints,然后在这些 RoutePoint 实例上调用 setTransport 方法并设置父级。

关于java - 如何将包含 parcelable 类 'A' 实例的 Parcelable 类 'B' 的实例写入 'B' 类的 Parcel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29240354/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com