我有一个带有按钮的Activity,单击按钮显示AlertDialog,工作正常。 但是在我单击AlertDialog上的“确定”或“取消”按钮后,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将消失。但, 活动无法接受任何接触。
如果我单击模拟器的“BACK”按钮,则Activity可以再次接收触摸,从那时起,它将非常好用,例如再次单击“显示”按钮,然后再次单击“确定”,在AlertDialog消失后,“活动”可以接收触摸,而无需再单击模拟器的“返回”按钮。
那么,有谁能告诉我如何解决这个问题(活动首次无法接触到这一点)?
TIA
答案 0 :(得分:1)
“取消”按钮是否正常工作?即按下后活动是否正常?
我注意到你的代码存在这种差异:
builder.setPositiveButton("OK", new AlertDialog.OnClickListener()
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
第一行使用AlertDialog.OnClickListener
,第二行使用DialogInterface.OnClickListener
。我刚检查了我的代码,我的所有对话框都使用了DialogInterface.OnClickListener
。我不确定它是否有任何区别,但可能值得用“确定”按钮尝试DialogInterface.OnClickListener
。
答案 1 :(得分:1)
删除new AlertDialog.Builder(this).create().show();
来自您的代码。它会工作得很好。