【发布时间】:2011-07-30 13:16:34
【问题描述】:
我知道如何通过覆盖来捕获我的活动中的关键事件
public boolean onKeyDown(int keyCode, KeyEvent event)
问题是当软键盘打开时这个方法甚至没有被调用...... 有什么方法可以捕捉到这个事件吗?
【问题讨论】:
标签: java android events keyboard key
我知道如何通过覆盖来捕获我的活动中的关键事件
public boolean onKeyDown(int keyCode, KeyEvent event)
问题是当软键盘打开时这个方法甚至没有被调用...... 有什么方法可以捕捉到这个事件吗?
【问题讨论】:
标签: java android events keyboard key
是的,当我们谈到软键盘时,这意味着它没有那么容易使用。顺便说一下,与软键盘相关的方法没有预期的结果。例如:
@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。您可以捕捉到文本变化的任何阶段。 祝你好运!
【讨论】: