【发布时间】:2014-08-18 14:15:53
【问题描述】:
我有一个活动可以让列表视图膨胀。在列表项上单击打开一个对话框(它在相应的列表适配器中处理。)在方向更改时,显示对话框(如果有)消失(如预期的那样。)我想要的是显示对话框在方向更改时不关闭,并且我不知道如何干净地处理它。
【问题讨论】:
-
您无法处理,除非您想放弃对应用程序的方向更改支持。
标签: android android-dialog android-orientation
我有一个活动可以让列表视图膨胀。在列表项上单击打开一个对话框(它在相应的列表适配器中处理。)在方向更改时,显示对话框(如果有)消失(如预期的那样。)我想要的是显示对话框在方向更改时不关闭,并且我不知道如何干净地处理它。
【问题讨论】:
标签: android android-dialog android-orientation
当您旋转手机时,您的活动实际上会被销毁并重新创建。这包括您的对话。是的,这很可能是历史上最愚蠢的设计决定,但我们坚持下去。有两种方法可以解决:
1) 关闭这个“有用的”功能。如果您没有横向和纵向的不同布局,我建议您这样做。将 android:configChange="orientation|resize" 添加到清单中的活动中。
2) 实现 onSaveInstanceState/onRestoreInstanceState 并有一个变量来说明您是否需要重新创建和重新启动对话框。
【讨论】:
您可以在 androidManifest.xml 文件中禁用方向更改
<activity
android:name="com.example.deneme"
android:label="@string/app_name"
android:launchMode="singleTop"
*************android:screenOrientation="landscape" >*******************
</activity>
或
你可以在显示对话框之前完成
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
对话框显示后
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
【讨论】: