2014-10-26 88 views
1

我创建了一个AlertDialog,但我无法关闭它... 我可以看到它并按下按钮,但是当我按下“正面按钮”时,程序应做一些任务,然后关闭(关闭)对话框。所有的任务都在完成,没有关闭对话框,它只是闪烁一次(它可能会关闭然后重新打开,我不知道)。Android 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

+0

'dialog.dismiss();'=>'完成();'和请避免这种情况:'System.exit(0);' – 2014-10-26 19:29:18

+0

做什么你意思是?我只想删除对话框。 System.exit(0)放在那里退出程序,我可以用什么来替换它? – CoderOgden 2014-10-26 19:39:35

+1

你应该**不要**明确退出程序。这是一个**真棒!**设计模式! 'finish();'关闭你的对话框。 – 2014-10-26 19:45:09

回答

0

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

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

纠正'dismiss();' – 2014-10-27 08:23:24

+0

方法finish()对于新的DialogInterface.OnClickListener(){}类型是未定义的根据Java ...而在setPositiveButton中,我只想关闭对话框!怎么样? – CoderOgden 2014-10-27 08:59:06

+0

@Funkystein merci ..现在我们变得懒惰了,因为智能IDE .. – 2014-10-27 09:08:12

0

试试这个代码:

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();