以下警告对话框要求我点击我点击两次的按钮才能关闭对话窗口,经过一个小时的谷歌搜索后,我找不到答案。我确信它正盯着我,但我却看不到它。
编辑:更多的搜索让我相信对话框实际上已经打开了两次,它在这里发生: asset_id_text_view.setOnTouchListener(new OnTouchListener(){ @覆盖 public boolean onTouch(View v,MotionEvent event){
showAssetIDDialog();
return true;
}
});
编辑:从dialog.dismiss()开始;和一些谷歌搜索建议尝试dialog.cancel();这对我来说都不成功。
public void showAssetIDDialog() {
// TODO Auto-generated method stub
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
CreateTicketActivity.this);
// set title
alertDialogBuilder.setTitle("Enter Asset ID");
alertDialogBuilder.setCancelable(true).setMessage(
"How would you like to proceed?");
alertDialogBuilder.setPositiveButton("Enter text",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//enterTextDialog();
dialog.cancel();
}
});
alertDialogBuilder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
// create alert dialog
AlertDialog alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
答案 0 :(得分:3)
cancel()
- 取消对话框。这与调用dismiss()基本相同,但它也会调用DialogInterface.OnCancelListener(如果已注册)。
只需取消()将取消在DialogInterface上注册的监听器。
dismiss()
- 关闭此对话框,将其从屏幕上删除。可以从任何线程安全地调用此方法。请注意,在关闭对话框时不应该覆盖此方法以进行清理,而是在onStop()中实现该方法。
使用dialog.dismiss()
作为解决方案
http://developer.android.com/guide/topics/ui/dialogs.html#DismissingADialog
请参阅以上链接以获取进一步查询。
答案 1 :(得分:1)
所以看起来问题确实在于OnTouchListener
代码正在执行我要求它做的事情,那就是每次有一个motionEvent时打开一个AlertDialog。每次触摸至少需要2次
通过包含一个switch语句,我只能在屏幕被按下时触发alertDialog的打开,而不是在屏幕被释放时触发,如下所示:
asset_id_text_view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
showAssetIDDialog();
break;
default:
break;
}
});
答案 2 :(得分:0)
您可以在按钮的dialog.dismiss()
中拨打OnClickListener
以关闭对话框。
答案 3 :(得分:0)
使用dialog.dismiss();
关闭此对话框,将其从屏幕上删除。这种方法可以 从任何线程安全地调用。
alertDialogBuilder.setPositiveButton("Enter text",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
//enterTextDialog();
dialog.dismiss();
}
});