6

我有 2 个活动:A,B. 活动 A 的布局,有一个用户更改其内容的视图组。在活动 B 中,我必须再次显示该视图组,没有任何更改,它必须是该视图组的真实副本,所以文本、颜色、尺寸、顺序(子项)和...必须相同。所以我不能使用Layout Inflater。是否可以不创建该视图组的子项类型的类并更改属性?因为如果我有超过 2 个具有不同视图组的活动,很难在上一个活动中显示每个活动的视图组。

我也不能从他们的父母那里删除这些视图组。

4

5 回答 5

5

如果它们的内容相同,那么进行两种不同的活动就没有意义了。您可以动态更改一个活动的内容,其行为将与有两个活动相同。如果确实有必要,那么您将不得不保存所有需要的信息以再次重建活动并将其传递给新创建的活动。看看这个

于 2013-01-23T15:40:28.880 回答
4

No easy way to do this. You cant move view's between activities. So you have several options:

  • create a bitmap of viewGroup and show in in new activity (doesn't work is you need editable copy)
  • save view's hierarchi state in old activity and recreate it in new one (using fragments makes it easier).
  • do not create new activity. Just change some UI parts in old one not touching target ViewGroup.
于 2013-01-21T10:23:56.153 回答
1

创建一个包含视图组配置的类。让这个配置类保存与您的 ViewGroup 相关的所有信息。它将保存文本、颜色、订单尺寸以及用户更改的所有内容。将此类的对象从 Activity A 传递给 Activity B 并使用它,通过膨胀相同的布局来重现相同的视图。

希望有帮助。

为了回答您的问题,没有其他简单的方法可以做到这一点。

于 2013-01-21T07:34:52.573 回答
1

只是一个普遍的疑问?为什么要进行两个活动 为什么不使用分配给同一个视图的两个片段 使用底层活动来存储在一个片段(视图)中发生的所有更改,并且当用户传递到另一个视图时只需发送第二个片段的参数。因此,您正在向用户模拟它是两个活动,但实际上它只是由单个活动控制的两个片段。

于 2013-01-28T01:16:52.560 回答
1

对于需要共享的 ViewGroup,将其重构为一个名为 C 的 Fragment。然后为 Activity A 和 B 的部分减去该共享部分创建 Fragment。然后将所有这些片段包含在一个新的包含活动中(您将不再需要活动 A 和 B)。

Fragment A 和 C 将成为新的 Activity A。Fragment B 和 C 将成为新的 Activity B。要从第一个状态转换到第二个状态,请执行 FragmentTransaction 添加 Fragment B 并删除 Fragment A。记住将此事务添加到后退堆栈,因此后退按钮将带您回到第一个状态。

于 2013-01-25T18:02:19.907 回答