我在我的应用中使用加速度计的数据。如果更改了设备的角度,则屏幕方向应该更改。 为了改变方向,我有2个布局,一个用于纵向,一个用于横向。
当方向改变时,调用一个用以下内容改变布局的函数:
的setContentView(R.layout.landscape);或setContentView(R.layout.portrait);
这样可以正常工作,但我有几个UI元素的问题,如按钮或ToggleButtons。 我在onCreate方法中为它们初始化一个onClickListener,每次更改orienation时,我都会初始化一个新的onClickListener。
不幸的是我不能再改变ToggleButtons的状态了。
我该如何解决这个问题?
答案 0 :(得分:1)
您可以使用/layout-land
和/layout-port
,手机会在方向更改时自动为您切换。见
http://developer.android.com/guide/practices/screens_support.html#DesigningResources
关于切换按钮,请参阅onRetainNonConfigurationInstance()
答案 1 :(得分:0)
如上面的Bill Gary所述,为什么不让系统为您处理方向变化呢?此外,标准系统小部件应在您执行此操作时自动保留其状态。如果需要,请参阅here了解为何以及如何管理自定义状态。