V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
moonqqqq
V2EX  ›  Android

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

  •  
  •   moonqqqq · 2017-07-28 00:05:46 +08:00 · 8137 次点击
    这是一个创建于 2676 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在研究 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 就不切换了。。。

    不知道有没有别的解决方法。。。还请赐教
    shockwave1
        1
    shockwave1  
       2017-07-28 07:22:34 +08:00 via iPhone
    切换横竖屏,重绘 layout ,所以保持 activity 的状态
    shily
        2
    shily  
       2017-07-28 09:32:11 +08:00 via Android   ❤️ 2
    android:configChanges 的意思是,我自己处理这些事件,系统不要管了。然而你也没有管理,所以就这个样子了。
    正确的解法是使用 onSaveInstanceBundle
    vjnjc
        3
    vjnjc  
       2017-07-28 14:10:42 +08:00
    应该是 onSaveInstanceState ()方法里把你要存的 value 存下来,onRestoreInstanceState ()里面恢复。
    不知道有么有更好用的方法。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2695 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 10:52 · PVG 18:52 · LAX 02:52 · JFK 05:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.