InputMethodService onCreateInputView 未调用

问题描述 投票:0回答:1

我有一个简单的 InputMethodService 实现:

class MyKeyboardView : InputMethodService() {

    override fun onCreate() {
        super.onCreate()

        Timber.d("onCreate")
    }

    // Also tried the default implementation
    override fun onShowInputRequested(flags: Int, configChange: Boolean): Boolean {
        Timber.d("onShowInputRequested")

        return true
    }

    override fun onCreateInputView(): View {
        Timber.d("onCreateInputView")

        return KeyboardView(this)
    }

    private class KeyboardView @JvmOverloads constructor(
        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
    ) : View(context, attrs, defStyleAttr) {

        init {
            Timber.d("Init")
        }
    }

}

输入法已选择为当前输入法。

调用其他方法,如

onCreate
onShowInputRequested
onStartInputView
,但不调用
onCreateInputView

onCreateInputView
永远不会被调用。为什么?

android kotlin android-softkeyboard android-input-method
1个回答
0
投票

来自

onStartInputView
doc

保证 onCreateInputView() 会在调用此函数之前的某个时间被调用。

因此,如果您通过此方法看到调试日志,则必须调用 create 方法。

也尝试覆盖

onEvaluateInputViewShown
并返回 true。

© www.soinside.com 2019 - 2024. All rights reserved.