显示AlertDialog时暂停活动

时间:2019-01-11 02:15:00

标签: android android-layout alertdialog android-alertdialog

我知道,由于AlertDialog是演示文稿Activity的一部分,因此显示它不会触发OnPause中的Activity。我想要实现的是展示AlertDialog,并以某种方式触发OnPause的演示Activity

OnResume中,我设置OnGlobalLayoutListener来根据键盘是否可见来调整滚动视图的位置。但是,如果可见AlertDialog,则继续收听布局更改并相应地调整滚动视图可能没有任何意义,考虑到“焦点”当前位于AlertDialog和{{ 1}}在背景中部分可见。

我知道我可以以“弹出”样式开始活动,但这不是我想要的;我想使用Activity

1 个答案:

答案 0 :(得分:0)

使用另一个活动作为对话框。然后它将自动暂停您当前的活动。要开始对话框的活动,我在AndroidManifest.xml中是这样定义的:

<activity android:theme="@android:style/Theme.Dialog" />

在活动代码中使用此属性,以避免您的对话框出现在最近使用的应用列表中

android:excludeFromRecents="true"

如果您要阻止对话框/活动在用户单击对话框外时被破坏:

在Activity中使用setContentView()之后:

this.setFinishOnTouchOutside(false);

现在,当我调用startActivity()时,它将显示为一个对话框,当用户按下“后退”按钮时会显示上一个活动。

请注意,如果您使用的是ActionBarActivity(或AppCompat主题),则需要使用@ style / Theme.AppCompat.Dialog。