2014-10-26 57 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();