警报对话框显示但不可见

时间:2011-07-28 11:17:12

标签: android android-alertdialog

我有一项活动,我使用onActivityResult启动内置摄像头。拍完照片后,我回到我的应用程序并显示一个弹出窗口,询问用户是否要拍更多照片或不拍照。它工作正常,但拍完照片后,当我按下内置相机应用程序上的“保存”按钮时,我按下主页按钮,如果我回到我的应用程序,我的活动是可见但不活跃的应该是可见的弹出窗口,但我看不到它。如果我按下后退按钮并取消弹出,我的活动再次激活,但我不想让用户取消弹出窗口,所以当出现这种情况时,我无法使用我的应用程序,我只需要杀死它。 ..

问题是,如果显示对话框,如何强制对话框始终位于顶部?原因似乎是活动背后,等待用户与之交互......

谢谢!

3 个答案:

答案 0 :(得分:3)

我发现解决此问题的最简单方法是跟踪活动中对话框的生命周期,并在活动的hide()中执行show() / onResume。此解决方案一次仅适用于单个Dialog,但如果需要,可以轻松地适应更多。

1)让您的活动实施Dialog.OnDismissListener 2)为Dialog中的当前Activity添加实例变量:

private Dialog currentDialog = null;

3)在onResume()添加:

if(currentDialog != null) {
    currentDialog.hide();
    currentDialog.show();
}

4)对于在onCreateDialog()中创建的每个对话框,添加:

dialog.setOnDismissListener(this);
currentDialog = dialog;

5)最后,添加:

@Override
public void onDismiss(DialogInterface dialog) {
    if(dialog == currentDialog)
        currentDialog = null;
}

这似乎解决了我。

答案 1 :(得分:1)

似乎您的对话框可以取消。试试dialog.setCanceleabe(false)onResume dialog.show()(确保在恢复活动后可见)。

答案 2 :(得分:0)

老问题,我知道,但你应该添加一个标题: 如果布局没有高度或宽度,则可以缩小到0 * 0 - >隐形