kotlin - 尽管有保护措施,但我的 Kotlin 代码中出现 NullPointerException
问题描述
下面的代码片段来自我的 onOptionsItemSelected 函数。下面的第 2-5 行假设在显示软键盘时隐藏软键盘,否则调用活动的完成功能。
我从堆栈溢出时“如何隐藏软键盘”的答案之一中获得了这段代码。它在我的手机上运行良好,但是当我最近在 Playstore 上提交我的应用程序进行内部测试时,我发现它有时会抛出 NPE。有人可以解释为什么会发生这种情况的逻辑吗?
R.id.done -> {
val view:View? = this.currentFocus!! // throws null pointer exception
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
if (bool && view!=null) {
imm.hideSoftInputFromWindow(view.windowToken, 0)
} else{
finish()
}
return true
解决方案
!!
运算符称为非空断言运算符- 如果currentFocus
为空,它将抛出 NPE。由于您的view
can be null
,因此删除!!
操作员是安全的。
读:
推荐阅读
- r - 使用 R 官员包在 Word 文档中的文本字段和页脚中处理和处理文本
- html - 在 HTML 中居中按钮(水平对齐)
- python - 平均具有行和列标题的文本文件中的列
- android - 如何在 Room 中使用 SQL“NOT IN”运算符
- python - 在 Python 中使用 None 类型的条件语句未按计划进行
- postgresql - 枚举映射的休眠 Envers 错误
- python - PythonOCC(OpenCascade)中平移和旋转的基本误区
- javascript - 在 React 中使用 createPortal 时,在挂载 DOM 之前触发 componentDidMount
- c++ - C++ 中的字数
- excel - 如何使用另一个工作表的多行中的值填充列(Excel)