Dialog的setOnKeyListener响应两次有关问题
Dialog的setOnKeyListener响应两次问题
设置了一个Dialog当按返回键时用Dialog的setOnKeyListener捕捉返回键,LogCat的时候发现这个监听事件执行了两次,这是怎么回事,是它本身就执行两次吗,还是其它的原因造成的?
------解决方案--------------------
应该是一次的吧,上代码,无代码无真相啊,呵呵
------解决方案--------------------
楼主一不小心设置了两个监听器吧
------解决方案--------------------
mBuildDialogList.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (mBuildSlidingDrawer.isOpened()) {
mBuildSlidingDrawer.close();
} else if (mBuildDialogList.isShowing()) {
mBuildDialogList.dismiss();
}
}
Log.d("mBuildDialogList",getSystemDate()+"");
return false;
}
});
mBuildDialogList是一个Dialog,是在另一个Dialog内又弹出的一个,mBuildSlidingDrawer是mBuildDialogList内的一个抽屉控件,相实现抽屉控件上拉后通过返回键关闭抽屉控件,显示mBuildDialogList的界面,可是按下返回键setOnKeyListener监听事件执行了两次,连带着mBuildDialogList也关了,各位帮帮忙看看
------解决方案--------------------
就一个
------解决方案--------------------
把eclipse关掉,重开一遍,有可能是工具问题,我也遇到过,重开运行就好了
------解决方案--------------------
额,看错了,我遇到的是logcat打印两遍,和你的不一样
------解决方案--------------------
Android一次单击操作定义了两个事件,ACTION_DOWN和ACTION_UP,即按下和松手两个动作。
------解决方案--------------------
我碰到过这样的问题,的确是执行两次的,为了避免执行两次,你可以试试传说中的PV操作,也就是加个锁 平时锁开着,有人执行了就关了 别人就做不了了,这个人完事了以后再打开锁就OK
------解决方案--------------------
感觉7楼是正解。除了判断是什么按键被按下,还应该判断按键是up还是down
------解决方案--------------------
是要判断down和up
------解决方案--------------------
能不能说的详细一点啊!没太懂!
------解决方案--------------------
我也遇到这样的问题,同求
------解决方案--------------------
调用event.getAction()方法可以得到键盘的action:ACTION_DOWN, ACTION_UP, or ACTION_MULTIPLE.
设置了一个Dialog当按返回键时用Dialog的setOnKeyListener捕捉返回键,LogCat的时候发现这个监听事件执行了两次,这是怎么回事,是它本身就执行两次吗,还是其它的原因造成的?
------解决方案--------------------
应该是一次的吧,上代码,无代码无真相啊,呵呵
------解决方案--------------------
楼主一不小心设置了两个监听器吧
------解决方案--------------------
mBuildDialogList.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (mBuildSlidingDrawer.isOpened()) {
mBuildSlidingDrawer.close();
} else if (mBuildDialogList.isShowing()) {
mBuildDialogList.dismiss();
}
}
Log.d("mBuildDialogList",getSystemDate()+"");
return false;
}
});
mBuildDialogList是一个Dialog,是在另一个Dialog内又弹出的一个,mBuildSlidingDrawer是mBuildDialogList内的一个抽屉控件,相实现抽屉控件上拉后通过返回键关闭抽屉控件,显示mBuildDialogList的界面,可是按下返回键setOnKeyListener监听事件执行了两次,连带着mBuildDialogList也关了,各位帮帮忙看看
------解决方案--------------------
就一个
------解决方案--------------------
把eclipse关掉,重开一遍,有可能是工具问题,我也遇到过,重开运行就好了
------解决方案--------------------
额,看错了,我遇到的是logcat打印两遍,和你的不一样
------解决方案--------------------
Android一次单击操作定义了两个事件,ACTION_DOWN和ACTION_UP,即按下和松手两个动作。
------解决方案--------------------
我碰到过这样的问题,的确是执行两次的,为了避免执行两次,你可以试试传说中的PV操作,也就是加个锁 平时锁开着,有人执行了就关了 别人就做不了了,这个人完事了以后再打开锁就OK
------解决方案--------------------
感觉7楼是正解。除了判断是什么按键被按下,还应该判断按键是up还是down
------解决方案--------------------
是要判断down和up
------解决方案--------------------
能不能说的详细一点啊!没太懂!
------解决方案--------------------
我也遇到这样的问题,同求
------解决方案--------------------
调用event.getAction()方法可以得到键盘的action:ACTION_DOWN, ACTION_UP, or ACTION_MULTIPLE.