【问题标题】:onSaveInstanceState called after fragment replaced片段替换后调用 onSaveInstanceState
【发布时间】:2015-05-22 21:26:47
【问题描述】:

问题

onSaveInstanceState 正在为已在片段事务中替换的片段调用设备轮换。这会导致 IllegalStateException 并显示消息“尚未创建内容视图。

研究

我找到了以下两个似乎最相关的答案

Using onSaveInstanceState with fragments in backstack?

onSaveInstanceState of previous fragment is called on-orientation of current fragment

我已经尝试过了

在回答第二个问题后,我已从片段事务中删除了 addtobackstack,但仍然出现错误。

我阅读了第一个问题的已接受答案,但不确定如何在 onSaveInstanceState 中为活动获取片段引用。我也不是特别想保存那个片段,当用户离开那个片段时,它的状态不需要保存。

我也尝试将if (getView() != null) {...} 添加到片段中的 onSaveInstanceState 中,但这没有任何区别。

问题

  1. 为什么即使片段没有被添加到后台堆栈,也会调用 onSaveInstanceState?
  2. 当用户完成片段后,以某种方式杀死片段的正确方法是否正确?
  3. 有其他解决方案吗?

提前感谢您的帮助。

安德鲁

编辑

如果我从添加片段的事务中删除 addtobackstack(null) 并且删除它的那个问题就消失了,但是一个重要的功能也会这样做......我可以将这种情况添加到我的 onBackPressed 覆盖函数但这似乎有点小技巧,而且不是很好。

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    添加一个 isVisible() 检查在 backstack 中的片段的 onSaveInstanceState 应该可以工作。

    不可见时无需保留实例状态。

    【讨论】:

      猜你喜欢
      • 2022-12-15
      • 1970-01-01
      • 2014-01-20
      • 2021-09-08
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多