我有一個按鈕的活動,單擊按鈕以顯示AlertDialog,工作正常。 但是當我單擊AlertDialog上的「OK」或「Cancel」按鈕後,AlertDialog會根據需要消失,但奇怪的是:Android:AlertDialog解散後,該活動似乎失去了重點
AlertDialog消失後,Activity似乎失去了焦點,這意味着它無法再接受任何接觸。
下面是代碼:
protected Dialog onCreateDialog(int id, Bundle args)
{
new AlertDialog.Builder(this).create().show();
Dialog dialog = null;
switch(id)
{
case...
break;
case ID_DIALOG2:
AlertDialog.Builder builder = new AlertDialog.Builder(ControlDialog.this);
builder.setTitle("Prompt");
builder.setMessage("Are you sure to quit?");
builder.setPositiveButton("OK", new AlertDialog.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
Log.e("AlertDialog", dialog.toString()+ " " + which);
// do something else
dialog.dismiss(); // even without dismiss(), the AlertDialog can disappear too.
//ControlDialog.this.dismissDialog(ID_DIALOG2); // doesn't work either
// dialog.cancel(); // doesn't work either
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
Log.e("AlertDialog", dialog.toString()+ " " + which);
// do something else
dialog.dismiss();
}
});
dialog = builder.create();
//dialog.show();
break;
}
return dialog;
}
protected void onPrepareDialog(int id, Dialog dialog)
{
switch(id)
{
case ...
break;
case ID_DIALOG2:
((AlertDialog)dialog).setTitle("Title");
((AlertDialog)dialog).setMessage("Simple Information");
break;
}
}
public void onClick(View v)
{
switch(v.getId())
{
case R.id.show_button:
this.showDialog(ID_DIALOG2, null);
break;
case ...
}
}
對不起,我不能發佈圖片:(
點擊的活動「顯示」按鈕後,出現AlertDialog 點擊「確定後。 「AlertDialog上的按鈕,AlertDialog消失但是, Activity無法接收任何觸摸
如果我單擊模擬器的」BACK「按鈕,那麼Activity可以再次接收觸摸,並且從此開始,它會工作得很好,例如再次單擊「顯示」按鈕,然後再次單擊「確定」,在AlertDialog消失後,活動即可接受觸摸,而無需再次點擊模擬器的「返回」按鈕。
那麼,有誰能告訴我如何解決這個問題(活動不能第一次接觸)?
TIA
謝謝加里。它首先是DialogInterface.OnClickListener,然後在嘗試多次失敗後更改爲AlertDialog.OnClickListener.I通過使用DialogInterface.OnClickListener或AlertDialog.OnClickListener – Patrick 2011-05-20 05:48:50
確定了相同的結果。取消工作正常嗎?你可能想刪除這一行:'新的AlertDialog.Builder(this).create()。show();'。我不知道爲什麼它在那裏,但它可能導致問題。 – 2011-05-20 06:00:44
我犯了一個錯誤。我忘了刪除方法onCreateDialog中的第一行(僅用於嘗試目的):new AlertDialog.Builder(this).create()。show(); 然後它工作正常... – Patrick 2011-05-20 06:01:09