以编程方式保存添加的方向更改视图?

时间:2013-04-07 03:01:04

标签: android views orientation

我在保存方向更改视图时遇到问题。所以这就是我的想法。我有一个扩展Horizo​​ntalScrollView的类,它在它的构造函数中创建一个LinearLayout和一个按钮。单击按钮时,会向LinearLayout添加更多按钮。活动开始时,我将操作栏设置为此自定义视图,一切正常,添加和删除LinearLayout中的按钮。但是,这就是问题开始的地方。如果切换方向onCreate重新启动,则会创建我的自定义视图的新实例并将其设置为操作栏。因此,当我切换方向时,我的自定义视图返回到开头。

如何在整个方向更改中保持视图的层次结构?

2 个答案:

答案 0 :(得分:1)

当方向更改活动被销毁并重新创建时。

在您的清单中,将以下内容添加到您的活动中。

      <activity android:name=".MyActivity"
      android:configChanges="orientation|keyboardHidden|screenSize"
      android:label="@string/app_name">
      //Beginning with Android 3.2 (API level 13), the "screen size" also changes when the device switches between portrait and landscape orientation.
      //add screenSize for api 13 and above.   

现在,当其中一个配置发生更改时,MyActivity不会重新启动。相反,MyActivity接收对onConfigurationChanged()的调用。此方法传递一个Configuration对象,该对象指定新设备配置。

http://developer.android.com/guide/topics/resources/runtime-changes.html

答案 1 :(得分:-1)

获取这些信息的最佳方法是在清单中为您的活动添加android:configChanges =“orientation”,它将阻止Android假设您想要的破坏和重新启动功能。说实话,我建议将其添加到任何没有横向和纵向模式的不同布局文件的活动中。