首页 > 解决方案 > 尽管有保护措施,但我的 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 

标签: kotlinandroid-softkeyboardinputmethodmanager

解决方案


!!运算符称为非空断言运算符- 如果currentFocus为空,它将抛出 NPE。由于您的viewcan be null,因此删除!!操作员是安全的。

读:


推荐阅读