android - 从两窗格模式到单窗格模式的方向更改异常
问题描述
我有一个支持智能手机和平板电脑的演示应用程序。
它还支持方向更改。
在平板电脑上有一个窗格和两个窗格模式。两种窗格模式仅适用于横向模式。所有 UI 都暴露在片段中。
两个窗格模式下的 UI 是常见的主从模式:左侧的列表和右侧的详细信息屏幕。
在横向模式下,其余所有内容都与平板电脑有关。
场景:
- 以横向模式在平板电脑上运行应用程序
- 选择左侧的文章(在第二个窗格中,默认片段将被带有文章详细信息的片段替换)
- 改变方向
- 出现异常
我面临的问题是当方向改变发生时我收到一个异常。错误消息报告没有带有 id 详细信息的 FrameLayout - 这与布局有关,应该只显示layout-sw600dp-land
. 对于纵向模式,还有另一种布局layout-sw600dp-port
FragmentManager
业务逻辑明确检查当前模式, on内没有操作R.id.details
public void show() {
if (isTwoPaneMode()) {
showMain();
showDetailed();
} else {
showMain();
}
}
它让我想到R.id.details
这个用例是否存在任何不存在的隐藏事务?
解决方案
问题出在详细片段中的 setRetainInstance(true) 中(由于重构而丢失)。
当它被删除时,一切都开始运作良好。
推荐阅读
- ios - “removeFromSuperview”永远不会在 UIApplication 上工作?
- mysql - 根据来自不同表的匹配列查询以填充 ID 列
- security - 如何构建基于插件的安全(受限生态系统)架构(在 Kotlin 中)
- java - 如何获得 DST 差距和重叠?
- python - (替代解决方案)Anaconda 安装问题 - 无法创建 Anaconda 菜单
- angular - 带有 array.indexOf 的 Angular ngIf 只能工作一次
- domain-driven-design - 在由域驱动设计和多语言持久性驱动的分布式架构中处理复杂的读取模型
- php - 我正在尝试将条带集成到我的网站中,但我遇到了一些问题
- python - Anaconda 包安装错误 [WinError 126] 找不到指定的模块
- tensorflow - 带有手写数字的简单机器学习示例不适用于 conv2d 和 MaxPooling2D