我知道,由于AlertDialog
是演示文稿Activity
的一部分,因此显示它不会触发OnPause
中的Activity
。我想要实现的是展示AlertDialog
,并以某种方式触发OnPause
的演示Activity
。
在OnResume
中,我设置OnGlobalLayoutListener
来根据键盘是否可见来调整滚动视图的位置。但是,如果可见AlertDialog
,则继续收听布局更改并相应地调整滚动视图可能没有任何意义,考虑到“焦点”当前位于AlertDialog
和{{ 1}}在背景中部分可见。
我知道我可以以“弹出”样式开始活动,但这不是我想要的;我想使用Activity
。
答案 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。