【问题标题】:Android AlertDialog dismiss method does not workAndroid AlertDialog 解除方法不起作用
【发布时间】:2014-10-26 19:27:06
【问题描述】:

我创建了一个 AlertDialog,但我无法关闭它... 我可以看到它并按下按钮,但是当我按下“肯定按钮”时,程序将执行一些任务,然后关闭(关闭)对话框。所有任务都在完成,没有关闭对话框,它只是闪烁一次(它可能会关闭然后重新打开,我不知道)。

AlertDialog.Builder builder = new AlertDialog.Builder(myContext);
        builder.setTitle("Congratulations, you won!");
        builder.setMessage("Time: x seconds\nScore: xxxx\nHigh score: yyyy");
        builder.setPositiveButton("Play again!",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // Doing stuff!
                        circle1Paint = yellowPaint;
                        circle2Paint = yellowPaint;
                        circle3Paint = yellowPaint;
                        playing = true;


                        // Trying to close it after doing "the stuff"
                        dialog.dismiss();
                    }
                });
        builder.setNegativeButton("Exit",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        System.exit(0);
                    }
                });
        builder.create.show();

提前致谢! CoderOgden

【问题讨论】:

  • dialog.dismiss(); => finish(); 请避免这种情况:System.exit(0);
  • 什么意思?我只想删除对话框。 System.exit(0) 放在那里退出程序,我可以用什么替换它?
  • 你应该永远明确退出程序。这是一个非常糟糕的设计模式! finish(); 关闭您的对话框。
  • 如何从视图类中的方法调用finish()?

标签: java android dialog android-alertdialog


【解决方案1】:

在退出按钮中放入 dilog.dissmiss() 然后完成();

builder.setNegativeButton("Exit",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                   dialog.dismiss(); 
                  finish();
                }
            });

【讨论】:

  • 更正拼写错误dismiss();
  • 新DialogInterface.OnClickListener(){}类型的方法finish()未定义根据Java...而在setPositiveButton中我只想关闭对话框!怎么样?
【解决方案2】:

试试这个代码:

AlertDialog.Builder builder = new AlertDialog.Builder(myContext);
    builder.setTitle("Congratulations, you won!");
    builder.setMessage("Time: x seconds\nScore: xxxx\nHigh score: yyyy");

    builder.setNegativeButton("Exit",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    System.exit(0);
                }
            });
    AlertDialog myDialog = builder.create();
    builder.setPositiveButton("Play again!",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // Doing stuff!
                    circle1Paint = yellowPaint;
                    circle2Paint = yellowPaint;
                    circle3Paint = yellowPaint;
                    playing = true;


                    // Trying to close it after doing "the stuff"
                    myDialog.dismiss();
                }
            });
    myDialog.show();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2011-07-04
    • 1970-01-01
    相关资源
    最近更新 更多