public boolean onTouchEvent(MotionEvent event) {  //重写onTouchEvent方法

int x = (int)event.getX(); //获得点击处的X坐标
int y = (int)event.getY(); //获得点击处的Y坐标
Rect rectQuit;
rectQuit = new Rect(25,425,115,475);//退出按钮的矩形框
if(rectQuit.contains(x,y)){ //按下退出键
 AlertDialog.Builder builder = new Builder(this);
   builder.setMessage("是否返回主菜单?");
   builder.setTitle("标题");
   builder.setPositiveButton("是",
     new android.content.DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int which) {
      System.exit(0);   //程序退出
      }
      });
   builder.setNegativeButton("否",
     new android.content.DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int which) {
    
       dialog.dismiss();
    
      }
      });
   builder.create().show();
 
}

return true;
}程序无误,点击“是”退出程序,可是要点击2次“否”才关闭对话框,不知为什么????(点击第一次“否”的时候,对话框就抖了一下,点击第二次才关闭。)还有什么更好的方法关闭对话框吗???

解决方案 »

  1.   

    listener里什么也不做  对话框也消失啊!dismiss 删掉试试
      

  2.   

    貌似onTouchEvent事件传递了2次,return true; 改成 false试试。
      

  3.   

    估计是你在某个View里也有一个“public boolean onTouchEvent(MotionEvent event)”,所以相当于onTouchEvent了两次,打开了2个对话框,这两个对话框重叠在一起你看不出来,你点击“是”,退出系统;第一次你点击“否”关掉第一个对话框,你再点击一次才关掉第二个对话框。