好 . 我终于想到了如何做我想做的事情,我并不为Android感到骄傲 .
我正在编写服务器/客户端应用程序,在客户端我必须打开SoftKeyboard并发送按键(字符和DEL键)...每按一次键,该字符将被发送到服务器 . 如果按下DEL,我将序列发送到服务器 .
为了做到这一点,我必须实现TextWatcher和onTextChange,除了EditText为空并且用户按DEL键的情况之外,它运行良好 . 由于EditText没有变化,因此无法检测到是否按下了DEL键 .
除了TextWatcher之外,我还必须实现onKeyListener,它附加到我的EditText控件 . 此onKeyListener忽略除了DEL和RETURN之外的SoftKeyboard上的所有键 . 不知道为什么?可能有一个bug?
这是我的代码:
TextView txtInput = (TextView)findViewById(R.id.txtInput);
txtInput.addTextChangedListener(inputTextWatcher);
txtInput.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
Log.d(TAG, keyCode + " character(code) to send");
return false;
}
});
和TextWatcher ....
private TextWatcher inputTextWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) { }
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{ }
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.d(TAG, s.charAt(count-1) + " character to send");;
}
};