我是android.i新手,只有一个activity
个main.xml
文件。现在,我在scroll view
文件中有一个main.xml
。当我在portrait mode
运行我的应用程序时,当我转到scroll view
的底部,而当我更改我的application state
到横向模式,而不是我转到滚动视图的顶部..这意味着当我们在portrait
到landscape
之间切换时,反之亦然,activity
会被召回。所以需要在portrait
中保存应用程序状态并在landscape
中恢复。所以任何解决方案呢?
提前致谢
Aamirkhan我。
答案 0 :(得分:3)
文档在explaining different ways to handle configuration changes中做得不错,包括屏幕方向更改。其中一种方法,有助于保存UI的临时状态,是在onSavedInstanceState()
方法中保存数据 - 正如@Jason Kuang所提到的那样。
通常,您可以依靠Android来保存和恢复View
的状态,而无需您做任何特别的努力。 protected
方法onSaveInstanceState()
的源代码解释了(强调添加):
默认实现通过在具有id的层次结构中的每个视图上调用android.view.View.onSaveInstanceState()并保存id,来为您处理大多数UI每个实例状态。当前关注的视图(所有这些都由onRestoreInstanceState(android.os.Bundle)的默认实现恢复)。如果您覆盖此方法以保存每个单独视图未捕获的其他信息,您可能希望调用默认实现,否则请准备好自己保存每个视图的所有状态。
这有点具有欺骗性,因为API文档指出EditText
和TextView
必须在布局XML文件中明确声明android:freezesText="true"
,以确保Android自动存储调用onSaveInstanceState()
时的状态。我最近没有测试过这个,但它是源代码似乎正在做的事情。因此,最好自己处理临时UI状态。
另一个提示:您可以通过调用View
上的setSaveEnabled(false)
明确阻止View
的临时数据存储。 (这不会影响其子女。)
通常,最好在onPause()
方法和onSaveInstanceState()
中手动保存屏幕状态。
答案 1 :(得分:2)
当您将应用程序状态从横向更改为纵向时,活动将被销毁并重新创建,如果要保存活动状态,可以参考 Saving Android Activity state using Save Instance State