我正在接受Google进行的高级android开发培训。这是link。我碰到了这个:Added a static fragment in xml
在旋转设备时,选定的单选按钮的状态将保留,如下所示:landscape mode
不使用setRetainInstance(true)如何保留片段的状态?片段是否不应该与活动的onDestroy()方法一起销毁?如果保留它而不显式调用setRetainInstance(true),那么使用该方法有什么意义?我对这两个概念感到困惑。有人可以阐明这一点吗?
答案 0 :(得分:2)
不使用setRetainInstance(true)如何保留片段的状态?
小部件的明显用户可变状态通常会自动进入保存的实例状态Bundle
中。其中包括诸如EditText
小部件中的文本以及CompoundButton
实现的检查状态,例如RadioButton
。
该片段是否应该与活动的onDestroy()方法一起销毁?
是的
如果保留它而不显式调用setRetainInstance(true),那么使用该方法有什么意义?
在现代Android应用程序开发中,您将不使用它,而是使用ViewModel
系统。它在幕后使用setRetainInstance(true)
。
更一般地说,保留片段的目的是保留状态 other ,而不是保持窗口小部件的用户可变状态。例如,您可能具有一些属性,这些属性引用了要在配置更改期间保留的业务对象(例如发票,客户)。