普通的EditText没有什么特殊设置。却发现了测试的时候输入文字后,点击键盘上的删除键不能删除,很气死人啊,然后百度也找不到合理的解决办法,到群里请教各位大神缺遭到被踢。唉。。。
然后不断通过代码还原,一步步的排查,却发现是在重写了dispatchKeyEvent()方法导致的,我用于监听系统的返回键。我直接return true了,这就相当于除了返回键和菜单键,其他按钮都得不到分发事件。
于是做了如下修改:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
/**
* 点击菜单键弹出退出程序的dialog
* 点击返回键只返回桌面不关闭程序
*/
@Override
public
boolean
dispatchKeyEvent(KeyEvent event) {
if
(event.getAction() == KeyEvent.ACTION_UP && event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
// 返回桌面
return
true
;
}
if
(event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_MENU) {
// 弹出退出程序的确定框
reutrn
true
;
}
return
super
.dispatchKeyEvent(event);
// 按下其他按钮,调用父类进行默认处理
}
|
另一种解决办法就是重写onKeyEvent()而不是dispatchKeyEvent()。
后来我又发现了一种解决办法。监听返回键,可以重写OnBackPressed()方法,在activity中已经替我们实现了监听系统的返回键了。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (getApplicationInfo().targetSdkVersion
>= Build.VERSION_CODES.ECLAIR) {
event.startTracking();
} else {
onBackPressed();
}
return true;