EditTextからKeyEvent(KEYCODEL,KEYCODE ENDTER)を取得する方法


EditTextは、開発した注釈アプリケーションにタグオフ機能を追加するために、ユーザーのEnterキー入力とDeleteキー入力をキャプチャする必要があります.最初はTextWatcherで調べようとしたが失敗した・・・T^Tの理由は,ユーザがソフトキーボードに鍵を連続的に入力すると,与えられた情報(count,before,after,start)が利用できないためである.そこでonKeyEvent関数の大げさな方法を考えてみましたが、onKeyEventはSoft Keyboardにインクカートリッジです...だから私はグーグルに努力している間に、InputConnectionを利用してKeyEventを捕まえる方法を知りました.
簡単な使用例を覚えておいてください.
class MyEditText : AppCompatEditText {
    constructor(context: Context) : super(context) {
    }

    constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
    }
    
    override fun onCreateInputConnection(outAttrs: EditorInfo?): InputConnection {
        return object : InputConnectionWrapper(super.onCreateInputConnection(outAttrs), true){
            override fun sendKeyEvent(event: KeyEvent?): Boolean {
                if(event?.action == KeyEvent.ACTION_DOWN){
                    when(event.keyCode){
                        KeyEvent.KEYCODE_DEL->{
                            //catch delete key
                        }
                        KeyEvent.KEYCODE_ENTER->{
                            //catch enter key
                        }
                    }
                    
                }
                return super.sendKeyEvent(event)
            }
        }
    }
}
EditTextを継承してCustom EditTextを作成し、Custom EditTextでonCreateInputConnectionを上書きして終了します!