【问题标题】:Closing the activity after clicking positive button in alert dialog in android在android的警报对话框中单击肯定按钮后关闭活动
【发布时间】:2012-07-18 17:57:42
【问题描述】:

我有一个名为“A”的活动,它显示项目列表。单击更新按钮时,它会显示自定义对话框(活动显示在后面)并选择项目列表。单击自定义对话框内的订单按钮时​​。

  1. 自定义对话框消失。
  2. 显示进度对话框(因为订单工作正在进行中)
  3. 然后在订单工作完成后关闭进度对话框
  4. 我将显示“订单已确认”的警报对话框
  5. 当我单击警报对话框中的肯定按钮时,我想关闭后面的活动(即活动 A)。想移至主屏幕
  6. 如何在 alertdialog 正面按钮 Onclicklistener() 中调用完成代码

请帮我解决这个问题。

noData.setPositiveButton("Ok", new DialogInterface.OnClickListener(){
    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.cancel();
    }
});

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

【问题讨论】:

    标签: android


    【解决方案1】:

    你需要这样的东西:

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

    只需在 onClick 中添加 finish() 就可以了。

    【讨论】:

    • 我认为您的建议不会帮助我关闭当前正在运行的活动。首先我将关闭警报对话框,我想在后面关闭当前活动
    • 这就是完成的工作,甚至不需要关闭对话框,因为这将在活动停止时完成。
    • 如果您的 onClickListener 是您的活动 A 的内部类,这是一个很好的建议。AlertDialog 无论如何都会关闭而无需任何其他代码。
    • 这给了我一个泄露的窗口。虽然不会崩溃。在调用完成之前,需要先关闭对话框。
    • 你可以在finish()之前调用dialog.dismiss()。我很少使用对话框,也不记得泄漏窗口的问题。
    【解决方案2】:

    请参阅下面的代码(将 MyActivity 替换为该代码所在的活动名称):

    noData.setPositiveButton("Ok", new DialogInterface.OnClickListener(){
        @Override
        public void onClick(DialogInterface dialog, int which) {
            MyActivity.this.finish();
    }
    });
    

    添加this很重要!

    【讨论】:

    • 在完成警报对话框正面按钮的活动时是否需要调用 dialog.dismiss
    【解决方案3】:

    最好的选择是使用 Handler。这里是参考链接http://www.tutorialforandroid.com/2009/01/using-handler-in-android.html

    【讨论】:

    • 最糟糕的选择是使用 Handler,原因是在 handler.sendMessage 和作用于它的处理程序之间,looper 将开始运行,您的应用程序将继续运行。
    猜你喜欢
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    相关资源
    最近更新 更多