2013-04-07 87 views
4

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

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

回答

-1

获取这些信息的最佳方式是在清单中的活动中添加android:configChanges =“orientation”,它将防止Android假定您需要的销毁和重新启动功能。实际上,我建议将其添加到没有横向和纵向模式的不同布局文件的任何活动中。

2

当方向更改活动被破坏并重新创建时。

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

 <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

会不会做这种方式土崩瓦解,当我退出应用程序和同时回归到它之后?我将不得不恢复最后的视图状态。这很简单,它带来了另一个问题。 – 2013-04-07 14:10:29

+0

当您退出应用程序时,活动被破坏。所以它将在发布时重新创建。以上将阻止在定位更改期间重新创建活动 – Raghunandan 2013-04-07 14:51:28

+0

这不建议。你应该自己处理方向改变 – Raghunandan 2014-04-20 17:36:49

相关问题