我知道如何通过覆盖
来捕获活动中的关键事件public boolean onKeyDown(int keyCode, KeyEvent event)
问题是当软键盘打开时,这种方法甚至不被称为... 无论如何都能抓住这个事件?
答案 0 :(得分:0)
是的,当我们谈论软键盘时,这意味着不那么容易使用它。顺便说一句,与软键盘相关的方法没有预期的结果。例如:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
//do something
return super.onKeyDown(keyCode, event);
}
我发现的解决方法是使用TextWatcher。将此代码用于您的应用程序
YourEdit = (EditText) findViewById(R.id.YourEdit);
YourEdit.addTextChangedListener(new TextWatcher()
{
public void afterTextChanged (Editable s)
{
//checking of TextWatcher functionality
Toast.makeText(mContext, "afterTextChanged", 3).show();
//do something
}
public void beforeTextChanged (CharSequence s, int start, int count, int after)
{
//checking of TextWatcher functionality
Toast.makeText(mContext, "beforeTextChanged", 3).show();
//do something
}
public void onTextChanged (CharSequence s, int start, int before, int count)
{
//checking of TextWatcher functionality
Toast.makeText(mContext, "onTextChanged", 3).show();
//do something
}
});
这些方法按顺序调用:beforeTextChanged,onTextChanged和afterTextChanged。您可以捕捉任何文本更改阶段。 祝你好运!