我想在显示软键盘时覆盖后退按钮。基本上,当按下后退按钮时,我希望键盘关闭,并且我想将一些文本附加到用户在编辑文本字段中键入的内容上。所以基本上我需要知道键盘何时关闭。经过搜索后,我意识到没有可用的 API,唯一真正的方法是创建 EditText 类。
所以我创建了自己的 EditText 类并像这样扩展了 EditText
public class CustomEditText extends EditText
{
public CustomEditText(Context context)
{
super(context);
init();
}
public CustomEditText(Context context, AttributeSet attrs)
{
super(context, attrs);
init();
}
public CustomEditText(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
init();
}
private void init()
{
}
}
我也添加了这个方法
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event)
{
if (KeyEvent.KEYCODE_BACK == event.getKeyCode())
{
Log.v("", "Back Pressed");
//Want to call this method which will append text
//init();
}
return super.dispatchKeyEventPreIme(event);
}
现在这个方法确实覆盖了后退按钮,它关闭了键盘,但我不知道如何将文本传递到 EditText 字段中。有谁知道我会怎么做?
还有另一个简单的问题,有谁知道为什么这个方法被调用两次?正如您暂时所看到的,我添加了一条快速 logcat 消息来测试它的工作原理,但是当我点击后退按钮时,它会打印两次,为什么会这样做?
任何帮助将非常感激!!