Java 是否可以保存堆栈<;堆栈<;视图>&燃气轮机;在onSaveInstanceState中

Java 是否可以保存堆栈<;堆栈<;视图>&燃气轮机;在onSaveInstanceState中,java,android,Java,Android,是否可以将堆栈保存在onSaveInstanceState中 可以用另一种方法保存一些特定的数据来管理活动状态吗 是否可以在onSaveInstanceState中保存堆栈> 不,因为Stack和View没有Parcelable/Serializable接口,这是将对象放入捆绑包所必需的。捆绑包只接受数组/数组列表、字符串、原语等 可以用另一种方法保存一些特定的数据来管理活动吗 国家 你想保存哪些数据?如果要保存整个视图/视图组,您可能走错了路 例如,要指示TextView可见,请将布尔值设置为

是否可以将
堆栈
保存在
onSaveInstanceState

可以用另一种方法保存一些特定的数据来管理活动状态吗

是否可以在onSaveInstanceState中保存堆栈>

不,因为Stack和View没有Parcelable/Serializable接口,这是将对象放入捆绑包所必需的。捆绑包只接受数组/数组列表、字符串、原语等

可以用另一种方法保存一些特定的数据来管理活动吗 国家

你想保存哪些数据?如果要保存整个视图/视图组,您可能走错了路


例如,要指示TextView可见,请将布尔值设置为true,并将其放入捆绑包中。检查onCreate()中的布尔值并将视图设置为可见。如果TextView也有一些文本,请将其另存为字符串,并将文本设置为TextView,使其可见。

您无法将视图保存到绑定。你无论如何也不应该这么做。若重新创建“活动”,它将再次重新展开布局(若配置已更改,甚至会展开另一个布局),并创建新的视图层次结构

您应该将业务数据与UI分离,并将其存储在SaveInstanceState上。活动重新创建后,您应该获得该数据并相应地更新新的视图层次结构

例如,如果您有一个文本视图,该视图显示存储在MSSuperText字段中的某些文本,并且您的活动正在进行中,则应将其保存到onSaveInstanceState中的一个捆绑包中:

@Override
protected void onSaveInstanceState(final Bundle outState) {
    outState.putString("supertext", mSuperText);
}
当您的活动被重新创建时,在方法onCreate中,您会得到一个参数onCreate(final Bundle savedInstanceState),它将是您以前存储的Bundle。因此,您可以获得所需的值:

@Override
protected void onCreate(final Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
    if (savedInstanceState != null) {
         mSuperText = savedInstanceState.getString("superText");
    }
}

也许我问的不对。试着解释一下:我有一个活动来完成整个项目。和多个视图,存储在堆栈中。我只向用户显示堆栈中的最后一个视图。当用户想要“返回”时,我从堆栈中删除最后一个视图,并显示嵌套视图。问题是-我无法存储当前位置,应用程序中的用户在哪里。我可以重新创建整个活动并清理堆栈。视图绑定到上下文(这是您的活动实例)。由于活动被破坏,您的视图也应该被破坏。考虑使用片段,它们将使您的任务更容易,并且它们的生命周期比视图更灵活。