【问题标题】:Exception on orientation change from two-pane mode to one-pane mode从两窗格模式到单窗格模式的方向更改异常
【发布时间】:2018-12-13 17:05:59
【问题描述】:

我有一个支持智能手机和平板电脑的演示应用。

它还支持方向更改。

平板电脑有一个窗格和两个窗格模式。两种窗格模式仅适用于横向模式。所有 UI 都暴露在片段中。

两个窗格模式下的 UI 是常见的主从模式:左侧的列表和右侧的详细信息屏幕。

在横向模式下,其余的都与平板电脑有关。

场景:

  1. 在平板电脑上以横向模式运行应用
  2. 选择左侧的文章(在第二个窗格中,默认片段将被带有文章详细信息的片段替换)
  3. 改变方向
  4. 出现异常

我面临的问题是当方向改变发生时我收到一个异常。错误消息报告没有带有 id 详细信息的 FrameLayout - 这与布局有关,应该只为layout-sw600dp-land 显示。对于纵向模式,还有另一种布局layout-sw600dp-port

业务逻辑明确检查当前模式,FragmentManagerR.id.detailsFragmentManager内没有操作

public void show() {
    if (isTwoPaneMode()) {
        showMain();
        showDetailed();
    } else {
        showMain();
    }
}

这让我想到这个 R.id.details 上是否有任何隐藏事务在这个用例中不存在?

【问题讨论】:

    标签: android screen-orientation


    【解决方案1】:

    问题出在详细片段中的 setRetainInstance(true) 中(由于重构而丢失)。

    当它被删除时,一切都开始正常工作。

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 2016-07-09
      • 1970-01-01
      相关资源
      最近更新 更多