首页 > 解决方案 > 无法到达 EditText 中的 EditorAction

问题描述

我在我的应用程序中有一个 EditText,我在其中设置了它的 xml android:imeOptions="actionDone",它们在我的片段中我试图投射一个应该在完成点击时执行操作的函数,但它没有任何效果,并且软键盘甚至没有关闭..在调试中,按下完成时未达到EditorActionListener ...

哪个可能是它的问题?

在我的片段中,EditorActionListener 如下所示:

private lateinit var txtQta: EditText
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        txtQta = view.findViewById(R.id.txtQta)
        txtQta.setOnEditorActionListener { _, i, _ ->
            when(i) {
                EditorInfo.IME_ACTION_DONE -> {
                    addArticolo()
                    true
                }
            else ->
                false
            }
        }
}

我的编辑文本:

        <EditText
            android:id="@+id/txtQta"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:autofillHints="qty"
            android:text="@string/_1"
            android:hint="@string/qta"
            android:inputType="number|numberDecimal"
            android:padding="15dp"
            android:selectAllOnFocus="true"
            android:imeOptions="actionDone"
            android:singleLine="true"
            android:textAlignment="center"
            android:textStyle="bold" />

编辑:

实际上,我注册了另一个 EditorActionListener,因此它无法正常工作..

标签: androidkotlin

解决方案


您还可以使用关键侦听器:

editText.setOnKeyListener(View.OnKeyListener { v, keyCode, event ->
                if (keyCode == KeyEvent.KEYCODE_ENTER && event.action == KeyEvent.ACTION_UP) {
                    //Perform Code 
                    return@OnKeyListener true
                }
                false
            })

也许对你会更好


推荐阅读