Android 显示AlertDialog时暂停活动
我知道,由于Android 显示AlertDialog时暂停活动,android,android-layout,android-alertdialog,Android,Android Layout,Android Alertdialog,我知道,由于警报对话框是演示活动的一部分,显示它不会触发活动的暂停。我想要实现的是显示AlertDialog,并以某种方式触发呈现活动的OnPause 在OnResume中,我设置OnGlobalLayoutListener以根据键盘是否可见来调整滚动视图的位置。但是,如果一个警报对话框可见,那么考虑到“焦点”当前在警报对话框上,并且活动在后台部分可见,继续监听布局更改并相应调整滚动视图可能没有意义 我知道我可以用“弹出”方式开始活动,但这不是我想要的;我想使用另一个活动作为对话框。然后它会自动
警报对话框
是演示活动
的一部分,显示它不会触发活动
的暂停
。我想要实现的是显示AlertDialog
,并以某种方式触发呈现活动的OnPause
在OnResume
中,我设置OnGlobalLayoutListener
以根据键盘是否可见来调整滚动视图的位置。但是,如果一个警报对话框
可见,那么考虑到“焦点”当前在警报对话框
上,并且活动
在后台部分可见,继续监听布局更改并相应调整滚动视图可能没有意义
我知道我可以用“弹出”方式开始活动,但这不是我想要的;我想使用另一个活动作为对话框。然后它会自动暂停您当前的活动。要以对话框的形式启动活动,我在AndroidManifest.xml中对其进行了如下定义:
<activity android:theme="@android:style/Theme.Dialog" />
如果要在用户单击对话框外部时停止销毁对话框/活动,请执行以下操作:
在活动中的setContentView()之后使用:
this.setFinishOnTouchOutside(false);
现在,当我调用startActivity()时,它会显示为一个对话框,当用户按下后退按钮时,会显示上一个活动
请注意,如果您使用的是ActionBarActivity(或AppCompat主题),则需要改用@style/theme.AppCompat.Dialog。为什么不在AlertDialog的侦听器上使用呢。玩Activity的onPause是最糟糕的主意,请记住,如果您打电话,您的AlertDialog也会丢失。
this.setFinishOnTouchOutside(false);