在对一个按键进行监听完后,按键倒是没有问题,但是却发现系统自带的返回键没有反应了,代码如下
etSearch.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
//里面是监听的内容
if(i==KeyEvent.KEYCODE_ENTER&& keyEvent.getAction() == KeyEvent.ACTION_UP){
getWarehouseData();
}
return true;
}
});
这里的Onkey里的判断也写有我上次讲的,up和down事件的判断为了能让里面的代码只执行一次,
回到主题,这里虽然监听的内容成功了,系统的返回键却没反应?
后来翻阅了API文档,发现这句话
- True if the listener has consumed the event, false otherwise
如果listenner返回true表面已经使用了,否则false
这里的意思很明显就是如果你返回了true,这个监听就结束了,也结束了其他使用到该listener的控件,所以罪魁祸首就是return true;我们只需把外层的return true改为false,就完美解决问题了。
etSearch.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
//里面是监听的内容
if(i==KeyEvent.KEYCODE_ENTER&& keyEvent.getAction() == KeyEvent.ACTION_UP){
getWarehouseData();
}
return false;
}
});