如何使用Kotlin从片段关闭软键盘?

时间:2019-04-03 22:07:39

标签: android kotlin android-softkeyboard

我想从片段内部关闭软键盘。 我发现了很多答案,但是它们都是Java语言的。通常,我可以很轻松地将其过渡到Kotlin,但与此同时我却很难过。

我最接近的是这个

fun closeKeyboard() {
    val activity = activity as FeedActivity

    val view = activity.currentFocus
    if (view != null) {
        val imm = ContextCompat.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager?
        imm!!.hideSoftInputFromWindow(view!!.getWindowToken(), 0)
    }
}

但是我在getSystemService(Context.INPUT_METHOD_SERVICE)这部分上遇到了麻烦

2 个答案:

答案 0 :(得分:3)

ContextCompat.getSystemService外,其他都没问题。使用Activity实例代替ContextCompat

val imm = activity.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(view!!.getWindowToken(), 0)

答案 1 :(得分:0)

在没有直接访问Activity实例的情况下,我来这里是寻找类似问题的答案。

尽管可接受的答案有效,但是如果传递了所请求服务的类,您仍然可以使用ContextCompat,这样可以为您完成转换,

val imm = ContextCompat.getSystemService(view.context, InputMethodManager::class.java)
imm?.hideSoftInputFromWindow(view.windowToken, 0)