onEditorAction() is not called after Enter key has been pressed on Jelly Bean emulator

后端 未结 2 1447
轮回少年
轮回少年 2021-02-07 01:57

I\'m having a problem with the behavior of the latest Jelly Bean emulator. I have several EditTexts in my app. An OnEditorActionListener provides speci

相关标签:
2条回答
  • 2021-02-07 02:25

    Here's what I did, which should cover all types of the Enter being pressed:

    override fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent?): Boolean {
        if (actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_NULL)
            ... // Enter pressed
    

    In XML I added only android:imeOptions="actionGo"

    The reason, according to the docs:

    https://developer.android.com/reference/android/widget/TextView.OnEditorActionListener.html#onEditorAction(android.widget.TextView,%20int,%20android.view.KeyEvent)

    actionId int: Identifier of the action. This will be either the identifier you supplied, or EditorInfo#IME_NULL if being called due to the enter key being pressed.

    0 讨论(0)
  • 2021-02-07 02:35

    If someone else finds this question:

    I've tested this several times and on the Jelly Bean emulator the listener callback method onEditorAction() indeed no longer gets called when the Enter key is pressed on the virtual keyboard.

    As I mentioned above a possible solution or workaround is to replace the Enter key with one of the available action keys. Those still trigger onEditorAction(). I also had to specify the input type.

    editText.setRawInputType(InputType.TYPE_CLASS_TEXT);
    editText.setImeOptions(EditorInfo.IME_ACTION_GO);
    <EditText
    ...
    android:imeOptions="actionGo"
    android:inputType="text" />
    
    0 讨论(0)
提交回复
热议问题