android程序 连击图像按钮后对话框只弹出一次处理

给程序做测试 发现一个问题
连续点击后 同样的对话框连续弹出2次 请问应该怎么解决
出现这问题应该是在对话框没有弹出之前,连续多次点击图片所造成的原因
具体程序如下
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
//图像按钮按下的处理
btnpicture.setImageDrawable(getResources().getDrawable(
R.drawable.image2));

}

if (event.getAction() == MotionEvent.ACTION_UP) {
//图像按钮按下之后的处理,图像恢复到没有点击前的状态
btnpicture.setImageDrawable(getResources().getDrawable(
R.drawable.image1));

//对话框表示 (这里想添加一个判别式 点击图像按钮后对话框表示。对话框表示之前按下图片按钮也不会再弹出第二次对话框 )
dialogPictureShow();
}

我也不知道该怎么解释 请高人指教

您好,当快速的连续的两次点击,onTouch会调用4次,分别是down-up-down-up. 这样根据您代码的中判断,dialogPictureShow()会被调用两次,我猜你在dialogPictureShow()是有new dialog对象代码,那么,如果您在dialogPictureShow()没有判断dialog是否已经创建过,dialog就会被创建两次。
一种办法是:
您可以在dialogPictureShow();方法中加如下判断:
a.dialog是否已经创建了。dialog != null.
b.dialog是否处于显示状态,dialog.isShowing()
if(dialog != null ){
//创建对话框
...
}else{
if( ! dialog.isShowing()){
//显示
dialog.show();
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-07-13
最简单的做法,在这个类中加标志 比方说 private boolean dialogFlag = false;

dialogPictureShow前面加上判断

dialogPictureShow(){

if(!dialogFlag){
dialogFlag = true;

}else{

return;
}
}

然后在对话框退出的地方把dialogFlag设为false 就解决了

更好一点的解决方法就是不用对话框,而用PopWindow,在第一次调用显示PopWindow时初始化它,以后的每次只需要show一下它就行了,不会出现多个PopWindow的情况。

还有楼主的图片按钮实现方式太原始了,用 selector来设置图像按钮吧
http://wenku.baidu.com/view/bd44ddc56137ee06eff9184b.html 这里有介绍本回答被提问者采纳