我有2个活动:A,B.活动A的布局,有一个用户更改内容的视图组。在活动B中,我必须再次显示该视图组,没有任何更改,它必须是该组的真实副本viewgroup,so text,colors,dimensions,order(of childs)和...必须相同。所以我不能使用Layout Inflater
。是否可以不创建该视图组的子类型的类并更改属性?因为如果我有超过2个具有不同视图组的活动,则很难在上一个活动中显示每个活动的视图组。
此外,我无法从父母那里删除这些视图组。
答案 0 :(得分:5)
如果他们的内容相同,那么进行两项不同的活动毫无意义。您可以动态更改一个活动的内容,行为将与两个活动相同。如果确实有必要,那么您将必须保存所有需要的信息以再次重建活动并将其传递给新创建的活动。看看this。
答案 1 :(得分:4)
没有简单的方法可以做到这一点。你不能在活动之间移动视图。所以你有几个选择:
答案 2 :(得分:1)
创建一个包含视图组配置的类。让此配置类包含与ViewGroup相关的所有信息。它将保存文本,颜色是订单的尺寸以及用户更改的所有内容。将此类的对象从活动A传递到活动B并使用此方法,通过膨胀相同的布局来重现相同的视图。
希望有所帮助。
要回答你的问题,没有其他简单的方法可以做到这一点。
答案 3 :(得分:1)
对于需要共享的ViewGroup,将其重构为名为C的片段。然后为活动A和B的部分创建片段减去此共享部分。然后在新的包含活动中包含所有这些片段(您将不再需要活动A和B)。
片段A和C将是新的活动A.片段B和C将是新的活动B.要从第一个状态转换到第二个状态,请执行FragmentTransaction添加片段B并删除片段A.请记住添加此交易到后面的堆栈,所以后退按钮会让你回到第一个状态。
答案 4 :(得分:1)
只是一般疑问?为什么要进行两个活动为什么不使用两个片段分配给同一个视图使用底层活动来存储其中一个片段(View)中发生的所有更改以及当用户传递给另一个视图时只是发送第二个片段的参数。因此,您向用户模拟它是两个活动,但实际上它只是由一个活动控制的两个碎片。