savedInstanceState - 可见性更改未恢复?
Posted
技术标签:
【中文标题】savedInstanceState - 可见性更改未恢复?【英文标题】:savedInstanceState - visibility changes not restored? 【发布时间】:2016-06-24 11:11:29 【问题描述】:据我所知,Activity 会自动保存视图的状态,而 EditText
和 TextView
之类的东西会自动恢复它们的状态。
这不适用于可见性吗?
例如:
如果默认情况下在 XML 中,我有一个可见的 TextView
。
如果我使用 tvInput.setVisibility(View.GONE);
以编程方式将 textview 设置为 GONE
如果重新创建活动,tvInput
不会保持为GONE
,它现在在不应该出现时可见。
这是预期的行为吗?我需要自己处理视图可见性吗?
【问题讨论】:
有完全相同的问题。 EditText 的更改值被存储和恢复,但不更改可见性。我最终在 onRestore 中恢复了可见性...尚未阅读很多有关此的文档,并且在涉及 android dev 时相当生疏,我认为这有一些逻辑... 【参考方案1】:您是否在 XML 文件中为 TextView 设置了 ID?只有具有 id 的视图才会自动恢复其状态。 此外,如果您要覆盖 onSaveInstanceState(...) 和/或 onRestoreInstanceState(...),请不要忘记从调用超类的方法开始:
super.onSaveInstanceState(...);
super.onRestoreInstanceState(...);
还请记住,在 onCreate(...) 中,您的视图尚未恢复。它们只会在以后恢复。
【讨论】:
是的,我必须有它们的 ID,因为我以编程方式将它们设置为View.GONE
。我确实调用了super.onSaveInstanceState
,但我没有重写恢复实例方法,所以它应该调用超级方法。
有完全相同的问题。 EditText 的更改值被存储和恢复,但可见性没有改变。以上是关于savedInstanceState - 可见性更改未恢复?的主要内容,如果未能解决你的问题,请参考以下文章