我有一项活动,我使用onActivityResult启动内置摄像头。拍完照片后,我回到我的应用程序并显示一个弹出窗口,询问用户是否要拍更多照片或不拍照。它工作正常,但拍完照片后,当我按下内置相机应用程序上的“保存”按钮时,我按下主页按钮,如果我回到我的应用程序,我的活动是可见但不活跃的应该是可见的弹出窗口,但我看不到它。如果我按下后退按钮并取消弹出,我的活动再次激活,但我不想让用户取消弹出窗口,所以当出现这种情况时,我无法使用我的应用程序,我只需要杀死它。 ..
问题是,如果显示对话框,如何强制对话框始终位于顶部?原因似乎是活动背后,等待用户与之交互......
谢谢!
答案 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 - >隐形