2012-04-29 76 views
2

我正在做一個小遊戲,我試圖表現出的AlertDialog,問題是,當用戶點擊一個選項AlertDialog不會dissapear。AlertDialog不解僱

我正在使用loopers,所以我的遊戲線程在我的AlertDialog出現時停止(looper),當用戶單擊「取消」時遊戲線程再次運行,但對話框在頂部,用戶無法保持播放。

public void alerta(){ 
    Looper.prepare(); 
    myHandler = new Handler(); 


    AlertDialog.Builder alertadd = new AlertDialog.Builder(_context); 
    LayoutInflater factory = LayoutInflater.from(_context); 
    final View view = factory.inflate(R.layout.custom_dialog, null); 
    alertadd.setView(view); 
    alertadd.setNeutralButton("Tomar Foto", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dlg, int sumthin) { 
       stops++; 
       Toast.makeText(_context.getApplicationContext(), "Tomaste Foto", Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    alertadd.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dlg, int sumthin) { 
      System.out.println("Stops = "+stops); 
      stops++; 
      Toast.makeText(_context.getApplicationContext(), "Cancelar", Toast.LENGTH_SHORT).show(); 
      myHandler.getLooper().quit(); 
      dlg.dismiss(); 
     } 
    }); 

    alertadd.show(); 
    Looper.loop();  

} 

回答

0

不知道它是否會幫助,但嘗試

dlg.cancel(); 

或者看看這個。它在我的情況下完美地工作:

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setMessage(getString(R.string.a)) 
    .setCancelable(false) 
    .setPositiveButton(getString(R.string.b), new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     MyActivity.this.finish(); 
    } 
}) 
    .setNegativeButton(getString(R.string.c), new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     dialog.cancel(); 
    } 
}); 
AlertDialog alert = builder.create(); 
alert.show(); 
+0

還是同樣的問題,感謝您試用 – user1364649

+0

我敢肯定這工作,但我認爲我的問題是與我的looper – user1364649

0

它應該是alertadd.dismiss();。而不是dlg.dismiss();

嘗試。如果不是讓我知道...

+0

沒有運氣,「該方法dismiss()是不確定的AlertDialog.Builder類型」 – user1364649

0

你必須首先創建警報對話框,然後用它在的onClick方法解僱()方法:

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
AlertDialog alert = builder.create(); 
builder.setMessage(getString(R.string.a)) 
    .setCancelable(false) 
    .setPositiveButton(getString(R.string.b), new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     MyActivity.this.finish(); 
    } 
}) 
.setNegativeButton(getString(R.string.c), new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog, int id) { 
    alert.dismiss(); 
} 
}); 
alert.show()