ソフトキーボードが表示されているときに戻るボタンを上書きしたい。基本的に、戻るボタンが押されたときに、キーボードを閉じて、ユーザーがその編集テキストフィールドに入力したものにテキストを追加したいと思います。だから基本的に私はキーボードがいつ閉じられるかを知る必要があります。調べてみたところ、このための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フィールドにテキストを渡す方法がわかりません。誰かが私がこれを行う方法を知っていますか?
また、もう1つの簡単な質問ですが、このメソッドが2回呼び出される理由を誰かが知っていますか?ご覧のとおり、動作をテストするための簡単なlogcatメッセージを追加しましたが、戻るボタンを押すと2回出力されます。これを行う理由は何ですか?
どんな助けでも大歓迎です!!