我是 android 新手。我有一张单曲activity
with main.xml
文件。现在,我有一个scroll view
在那里面main.xml
file.当我运行我的应用程序时portrait mode
当我走到底部时scroll view
比我改变我的application state
到横向模式比我转到滚动视图的顶部..这意味着当我们在之间切换时portrait
to landscape
或反之亦然activity
被召回。所以需要将应用程序状态保存在portrait
并恢复在landscape
。那么有什么解决办法吗?
提前致谢
阿米尔汗一世
该文档做得不错解释处理配置更改的不同方法 http://developer.android.com/guide/topics/resources/runtime-changes.html,包括屏幕方向的变化。其中一种方法非常适合保存 UI 的临时状态,即将数据保存在onSavedInstanceState()
方法——正如@Jason Kuang 提到的。
一般可以依靠Android来保存和恢复状态View
无需您做任何特别的努力。的源代码protected
method onSaveInstanceState()
解释(强调):
默认实现通过调用 android.view.View.onSaveInstanceState() 来处理大部分 UI 每个实例的状态在层次结构中具有 id 的每个视图上,并通过保存当前聚焦视图的 id(所有这些视图都会恢复)通过 onRestoreInstanceState(android.os.Bundle)) 的默认实现。如果您重写此方法来保存每个单独视图未捕获的其他信息,您可能需要调用默认实现,否则准备好自己保存每个视图的所有状态。
这有点欺骗性,因为 API 文档指出EditText
s and TextView
必须有android:freezesText="true"
在布局 XML 文件中显式声明它们,以确保 Android 在以下情况下自动存储它们的状态:onSaveInstanceState()
被调用。我最近没有对此进行测试,但这就是源代码似乎正在做的事情。因此,最好自行处理临时 UI 状态。
另一个提示:您可以明确阻止存储临时数据View
通过致电setSaveEnabled(false)
在那View
。 (这不会影响它的孩子。)
通常,最好手动将屏幕状态保存在您的onPause()
方法,并且也在onSaveInstanceState()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)