有一个主要活动(A
)和两个片段(F1
和F2
)。两个片段都有setRetainInstance(true);
个声明。 F2
有一个静态字段b
。 A
首先运行F1
。按钮点击后,F1
使用片段管理器运行F2
。所以我创建F2
intsance,使用setter方法设置字段b
并将其放入片段管理器。这是一个好方法吗?使用bundle是在片段之间传输数据的唯一“好”方式吗?如果b
不是静态的呢?这会改变这种情况吗?
答案 0 :(得分:0)
您的方式 ALSO 一种在Fragments
之间传输数据的方式但只应在我们需要Retain
时使用State
的{{1}},即我们想要保存Fragment
的状态,例如我们使用的Fragment
属性Button
和visible
状态invisible
答案 1 :(得分:0)
片段意味着独立且可重复使用。您不应该使用静态进行此类操作。静态字段也不适合内存管理。使用捆绑,这在很多方面都很有帮助,包括 savedInstanceState
想象一下您需要在单个屏幕中多次重复使用Fragment B的情况。那个静态字段将无法存储多个值。不是吗?
您应该遵循标准做法,因为他们设计它来处理我们可能不知道的许多场景。只需去捆绑。