有没有可能在onSaveInstanceState
中保存Stack<Stack<View>>
。
如何保存一些特定的数据来管理活动状态?
发布于 2013-09-18 16:58:56
不能将视图保存到捆绑包中。不管怎样,你都不应该这么做。如果重新创建了activity,它将再次重新膨胀布局(或者,如果配置发生变化,甚至会膨胀另一个布局),并创建新的视图层次结构。
您应该将业务数据从UI中分离出来,并将其存储为onSaveInstanceState。在重新创建活动之后,您应该获得数据并相应地更新新的视图层次结构。
例如,如果您有一个显示字段mSuperText中存储的某些文本的TextView,而您的活动即将停止,则应将其保存到onSaveInstanceState中的包中:
@Override
protected void onSaveInstanceState(final Bundle outState) {
outState.putString("supertext", mSuperText);
}
当您的活动被重新创建时,在您的方法包中,您将获得一个参数onCreate(final onCreate savedInstanceState),它将是您之前存储的包。这样你就可以得到你需要的值了:
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
mSuperText = savedInstanceState.getString("superText");
}
}
发布于 2013-09-18 16:58:35
是否可以将Stack>保存在onSaveInstanceState中。
不,因为Stack和View没有Parcelable / Serializable接口,这是将对象放入Bundle所必需的。Bundle只接受数组/ArrayList、字符串、原语等。
可能会有另一种方式来保存一些特定的数据来管理活动状态?
您想保存哪些数据?如果你想保存整个View/ViewGroup,你可能用错了方法。
例如,要指示TextView是可见的,请将布尔值设置为true并将其放入包中。检查onCreate()中的布尔值,并将视图设置为可见。如果TextView也包含一些文本,请将其另存为字符串,并将文本设置为您设置为可见的TextView。
https://stackoverflow.com/questions/18867386
复制相似问题