【发布时间】:2014-04-10 22:00:25
【问题描述】:
我目前正在从事一个项目,该项目的活动由两个片段组成。
- 第一个片段显示了一个自定义的可扩展列表。每一行都是根据自定义布局创建的,该布局的右侧有一个复选框。
- 第二个片段显示有关列表中单击的行的更多详细信息。为了打开第二个片段,用户必须单击该行。该复选框用于其他原因。
所以,我要做的是仅在应用程序在平板电脑中运行时并排显示这两个片段。当应用在手机中运行并且用户按下一行时,第二个片段应该显示在顶部。
此外,我在屏幕顶部有一个操作栏,它实现了通常的后退按钮。
当我已经选择了一些复选框时打开第二个片段时存在问题。当我按下返回按钮时,它会将我导航到第一个片段,复选框将不会被选中。
显然没有调用 onSaveInstanceSate 方法(因为父活动没有暂停),所以我无法保存存储检查行的 ArrayList。
最后但同样重要的是,片段是动态添加的。
问题
如何正确实现后退按钮,以便用户使用时
- 平板电脑,应该使用后退按钮来关闭活动,或者
- 手机,所以后退按钮应该用作返回到第一个片段的导航,并能够恢复它的先前状态?
【问题讨论】:
-
所以真正的问题是复选框没有正确保存选中状态?如果这是真的,请确保在创建列表片段时调用 setRetainInstanceState(true)。对于布局问题,创建两个不同的布局,让android选择一个合适的。
-
首先,很抱歉@ScottNaef 我迟到的评论,并感谢您的重播。 setRetainInstanceState(true) 似乎没有解决我的问题。两种布局技巧对我来说不是一个选择。我认为您建议了两种不同的布局,其中第一个在布局目录中声明第一个片段,而另一个在 layout-large 目录中声明两个片段。好吧,我动态添加我的片段。如果这就是你真正的意思,那可能不是我要找的答案。