返回相同 activity 时无法显示键盘 - PinEntryEditText

Unable to show keyboard when returning to the same activity - PinEntryEditText

我按照此示例 (https://medium.com/@ali.muzaffar/building-a-pinentryedittext-in-android-5f2eddcae5d3) 在我的应用程序中创建了一个 PinEntryEditText。我想要的是每次打开包含 PinEntryEditText 的 activity 时显示键盘。我通过在 onResume 方法中请求焦点来做到这一点。

问题是当打开一个新的activity和返回回到activity 包含 PinEntryEditText。

这可能是什么问题?

    override fun onResume() {
    super.onResume()
    pinEntry_editText.post { pinEntry_editText.requestFocus() }
}

这是我试过的:

AndroidManifest 中,我将此行添加到我的 activity:

android:windowSoftInputMode="adjustResize" />

我建议监听当前焦点变化并强制显示键盘。 先补充一个showSoftKeyboard的乐趣:

private fun showSoftKeyboard(view: View) {
    if (view.requestFocus()) {
        val imm = view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager?
        
        // here is one more tricky issue
        // imm.showSoftInputMethod doesn't work well
        // and imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0) doesn't work well for all cases too
        imm?.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0)
    }
}

更新你的 onResume 乐趣:

override fun onResume() {
    super.onResume()
    currentFocus?.let {
        showSoftKeyboard(it)
    }
    pinEntry_editText.requestFocus()
}

**

pinEntry_editText.post { // Do work on UI Thread }

当我们不在 UI 线程上并且我们想切换回来进行一些 UI 更改时,这很有用,因此在这种情况下不需要这样做,因为将调用 onResume在 UI 话题上。