一个略微复杂的 layout 问题。。

2017-07-28 00:05:46 +08:00
 moonqqqq
最近在研究 andriod,之前毫无经验。
简单描述下这个问题的经过。。。
1. 我创建了两个 layout 文件,那么目前总共有三个 layout 文件,一个是 default 的也就是 activity_main.xml. 一个是 activity_main.xml ( sw400dp-land ), 还有一个是 activity_main.xml ( sw400dp-port ).
2. activity_main.xml ( sw400dp-port )和 activity_main.xml ( sw400dp-land )是用来显示当我用 Nexus 6 时候 app 的样子。
3. 在测试的时候, 我发现当我旋转 Nexus 6, 这些 layout 能正常切换。 但是呢当我如果在手机竖着的时候如果对 app 做了些改变 比如说在输入框输入了东西, 然后我把手机横过来, 我发现之前的更新丢失了。就是说我输入的东西没了。
4. 对于 3 中的问题,我研究了一下也在 V2EX 得到很好多人的帮助, 我用了 android:configChanges="orientation|screenSize|keyboardHidden" 去解决了这个状态丢失的问题。
5. 然而问题来了,如果我用了这个设置, 那么当我旋转手机后,layout 就不切换了。。。

不知道有没有别的解决方法。。。还请赐教
4082 次点击
所在节点    Android
3 条回复
shockwave1
2017-07-28 07:22:34 +08:00
切换横竖屏,重绘 layout ,所以保持 activity 的状态
shily
2017-07-28 09:32:11 +08:00
android:configChanges 的意思是,我自己处理这些事件,系统不要管了。然而你也没有管理,所以就这个样子了。
正确的解法是使用 onSaveInstanceBundle
vjnjc
2017-07-28 14:10:42 +08:00
应该是 onSaveInstanceState ()方法里把你要存的 value 存下来,onRestoreInstanceState ()里面恢复。
不知道有么有更好用的方法。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/378480

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX