方向更改 - 更新UI

时间:2012-01-31 19:28:12

标签: android screen orientation landscape portrait

我在我的应用中使用加速度计的数据。如果更改了设备的角度,则屏幕方向应该更改。 为了改变方向,我有2个布局,一个用于纵向,一个用于横向。

当方向改变时,调用一个用以下内容改变布局的函数:

的setContentView(R.layout.landscape);或setContentView(R.layout.portrait);

这样可以正常工作,但我有几个UI元素的问题,如按钮或ToggleButtons。 我在onCreate方法中为它们初始化一个onClickListener,每次更改orienation时,我都会初始化一个新的onClickListener。

不幸的是我不能再改变ToggleButtons的状态了。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您可以使用/layout-land/layout-port,手机会在方向更改时自动为您切换。见

http://developer.android.com/guide/practices/screens_support.html#DesigningResources

关于切换按钮,请参阅onRetainNonConfigurationInstance()

http://developer.android.com/reference/android/app/Activity.html#onRetainNonConfigurationInstance%28%29

答案 1 :(得分:0)

如上面的Bill Gary所述,为什么不让系统为您处理方向变化呢?此外,标准系统小部件应在您执行此操作时自动保留其状态。如果需要,请参阅here了解为何以及如何管理自定义状态。