点击Android警告对话框的积极按钮后关闭活动。

5
我有一个名为"A"的活动,它显示物品列表。点击更新按钮后,会显示自定义对话框(活动在后台显示),其中列出所选的物品。当自定义对话框内的订单按钮被点击时:
  1. 自定义对话框消失。
  2. 进度对话框显示(因为正在进行订单操作)。
  3. 订单工作完成后关闭进度对话框。
  4. 我将显示警示对话框,提示“订单已确认”。
  5. 当我在警示对话框中点击确定按钮时,我想关闭后面的活动(即活动A),并转到主屏幕。
  6. 如何在警示对话框的正面按钮OnClicklistener()中调用结束代码?
请帮我解决这个问题。
noData.setPositiveButton("Ok", new DialogInterface.OnClickListener(){
    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.cancel();
    }
});

如何在取消alertDialog()后添加finish()?

3个回答

13

您需要像这样的东西:

noData.setPositiveButton("Ok",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            // Finish activity
            finish();
        }
    });

在 onClick 内部添加 finish() 应该就可以了。


如果您的onClickListener是活动A的内部类,则这是一个很好的建议。 AlertDialog将在没有任何其他代码的情况下关闭。 - ernazm
我在自定义对话框类中有一个AlertDialog。无法在那里添加finish()。场景是,我有一个活动调用自定义对话框。单击自定义对话框中的按钮后,对话框消失,然后进度对话框开始,停止进度对话框后将打开带有“订单已确认”消息的AlertDialog。现在,如果我单击AlertDialog中的“确定”按钮,则希望关闭仍然存活的Activity A。我知道这有点令人困惑。但请提供解决方案。 - user637503
只需调用您的活动的 finish() 方法!如果您的监听器是您的活动的内部类,则为 finish();,否则为 yourActivty.finish();。如果您仍然没有解决问题,可以发布您的活动和监听器代码。 - ernazm
3
这给了我一个泄露的窗口。虽然不会崩溃,但在完成调用之前必须先关闭对话框本身。 - user317033
2
你可以在 finish() 之前直接调用 dialog.dismiss()。我很少使用对话框,也不记得有泄漏窗口的问题。 - Philio
显示剩余6条评论

6
请参考下面的代码(将MyActivity替换为您的活动名称,此代码所在的活动名称):
noData.setPositiveButton("Ok", new DialogInterface.OnClickListener(){
    @Override
    public void onClick(DialogInterface dialog, int which) {
        MyActivity.this.finish();
}
});

添加this非常重要!


当我从警告对话框的正面按钮结束活动时,我是否需要调用dialog.dismiss? - skyshine

0

最糟糕的選擇是使用 Handler,原因是在 handler.sendMessage 和 handler 執行之間,looper 會開始運行,而您的應用程序將繼續執行。 - user330844

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接