EditText 只能输入不能删除修改

这几天测试反馈一个问题,搜索框只能输入文字,不能删除修改。

之前还好好的突然出现问题了,而且这个通用的自定义搜索框在其他地方还能用,这下就奇怪了

看了一下SVN的代码修改和测试了一下,终于找到问题了


TabActivity上嵌入了几个Activity,这个搜索框就在这Activity上,我在TabActivity上新添加了按下返回键监听事件,代码如下:

/**
	 * 点击菜单键弹出退出程序的dialog
	 * 点击返回键只返回桌面不关闭程序
	 */
	@Override
	public boolean dispatchKeyEvent(KeyEvent event) {
		if (event.getAction() == KeyEvent.ACTION_UP && event.getKeyCode() == KeyEvent.KEYCODE_BACK) {  
	    	// 返回桌面
	    }
		if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_MENU) {
			// 弹出退出程序的确定框
		}
		return true;
	}


在dispatchKeyEvent()上我直接return true了,这就相当于除了返回键和菜单键,其他按钮都得不到分发事件

于是做了如下修改:

/**
	 * 点击菜单键弹出退出程序的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()


你可能感兴趣的:(EditText)