为什么编译器找不到android.R.id.home常量?

时间:2016-04-16 20:52:11

标签: android kotlin

在我的android的kotlin项目中,我得到一个错误,说android.R.id.home是未定义的。同时,我将最小的android sdk修复为14.我正在使用Kotlin'1.0.1-2'。

以下是需要它的代码的摘录(它是一个Activity,一个普通的,而不是AppCompatAcitivity)

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    when (item.getItemId()){
        is android.R.id.home -> {
            NavUtils.navigateUpFromSameTask(this)
            return true
        }
    }
    return super.onOptionsItemSelected(item)
}

这是错误:

e: $<path_start_from_my_disc>/AboutActivity.kt: (70, 29): Unresolved reference: home

1 个答案:

答案 0 :(得分:7)

您正在使用is运算符进行相等性检查,而它是一个类型检查运算符(如instanceof)。如果你只是删除is

,它应该有效
override fun onOptionsItemSelected(item: MenuItem): Boolean {
    when (item.getItemId()){
        android.R.id.home -> {
            NavUtils.navigateUpFromSameTask(this)
            return true
        }
    }
    return super.onOptionsItemSelected(item)
}