我想从片段内部关闭软键盘。 我发现了很多答案,但是它们都是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)
这部分上遇到了麻烦
答案 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)