现象:我这里有一个自定义的edittext捕获到了onkeydown事件,在返回true之前让另一个edittext获取到了焦点并且已注册了onkey事件。结果发现在Oneedittext执行了onkeydown返回true之前由twoedittext捕获到了onkeyup事件,然后再传递给activity的onkeyup事件,然后事件结束。
如果twoedittext没有获得焦点(跟注册事件没关系),oneedittext onkeydown返回true那么会直接执行oneedittext的onkeyup事件,进而执行activity的onkeup事件,然后结束。
分析:如果有别的控件在事件处理完成即返回之前抢夺焦点,那么本来由当前控件完成的事件传递会让给另一个抢夺焦点的控件。
解决办法:一般来说处理key事件,onkeydown事件返回true,onkeyup事件传递下去。