是否可以将Stack<Stack<View>>
保存在onSaveInstanceState
中。
可以通过另一种方式保存特定数据来管理活动状态的方法吗?
最佳答案
您无法保存视图以进行捆绑。而且您不应该这样做。如果重新创建活动,它将再次重新增加布局(甚至在配置已更改的情况下再次增加布局)并创建新的视图层次结构。
您应该将业务数据与UI分开,并将其存储在SaveInstanceState中。重新进行活动后,您应该获取该数据并相应地更新新的视图层次结构。
例如,如果您有一个TextView,它显示了一些存储在mSuperText字段中的文本,而您的活动正在进行,则应将其保存到onSaveInstanceState中的捆绑包中:
@Override
protected void onSaveInstanceState(final Bundle outState) {
outState.putString("supertext", mSuperText);
}
当您重新创建活动时,在方法onCreate中,您将获得一个参数onCreate(final Bundle savedInstanceState),它将作为您之前存储的捆绑软件。因此,您可以获得所需的值:
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
mSuperText = savedInstanceState.getString("superText");
}
}