gpt4 book ai didi

java - hideSoftInputFromWindow 抛出 NoSuchMethodError

转载 作者:行者123 更新时间:2023-12-01 23:15:02 26 4
gpt4 key购买 nike

我有 Java 代码,可以使用 InputMethodManager 隐藏软键盘。当我将代码转换为 Kotlin 时,相同的代码会引发 NoMethodFound 异常。

我可以轻松地在 Java 和 Kotlin 版本之间切换,并演示 Java 中的正确行为和 Kotlin 中的错误行为。

Java代码

            searchText.clearFocus();
InputMethodManager imm = (InputMethodManager)dialog.getContext().getSystemService(Activity.INPUT_METHOD_SERVICE);
try {
imm.hideSoftInputFromWindow(searchText.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
} catch (Throwable t) {
String stop = "here";
}

Kotlin 代码

            searchText!!.clearFocus()
val imm = dialog!!.context.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
try {
imm.hideSoftInputFromWindow(searchText!!.windowToken, InputMethodManager.HIDE_NOT_ALWAYS)
} catch (t: Throwable) {
val stop = "here"
}

Java 代码表现出正确的行为并关闭软键盘。Kotlin 代码抛出异常

"java.lang.NoSuchMethodError: No virtual method hideSoftInputFromWindow(Landroid/os/IBinder;I)V in class Landroid/view/inputmethod/InputMethodManager; or its super classes (declaration of 'android.view.inputmethod.InputMethodManager' appears in /system/framework/framework.jar:classes2.dex)"

最佳答案

看起来这个方法在Context中不可用。尝试使用应用程序上下文中的Context。为了获取应用程序的上下文,请执行类似 this 的操作或者在 kotlin 中搜索一些关于获取应用程序的信息可能会有所帮助。

关于java - hideSoftInputFromWindow 抛出 NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58357030/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com