Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 显示AlertDialog时暂停活动_Android_Android Layout_Android Alertdialog - Fatal编程技术网

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);