类型不匹配:推断的类型为Unit,但应为布尔值

时间:2019-11-19 01:51:49

标签: kotlin

我的手势有误,这是我的代码错误,startActivity(intent)Toast.makeText中的错误

R.id.menu_share -> {
    val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://web.whatsapp.com"))
    startActivity(intent)
}
R.id.menu_info -> {
    Toast.makeText(this,"Ada Toast", Toast.LENGTH_LONG).show()
}
else -> false

2 个答案:

答案 0 :(得分:0)

R.id.menu_share -> {
    val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://web.whatsapp.com"))
    startActivity(intent)
}
R.id.menu_info -> {
    Toast.makeText(this,"Ada Toast", Toast.LENGTH_LONG).show()
}
else -> {
    // you can either left this block empty or just put `return`
}

答案 1 :(得分:0)

我们需要更多代码才能为您提供完整的答案,但是我可以尝试假设并为您提供最接近的答案。

when可以以两种方式使用

  1. 独立
  2. 作为表达

如果将其用作switch,即根据具体情况采取不同的措施 您不需要返回值,也不需要else语句

例如:

when (menuItem.id) { /** I guess you're trying to perform differet actions based on menu item click */
    R.id.menu_share -> {
        val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://web.whatsapp.com"))
        startActivity(intent)
    } /** returns Unit */

    R.id.menu_info -> {
        Toast.makeText(this,"Ada Toast", Toast.LENGTH_LONG).show()
    } /** returns Unit */

} /** result ignores / Unit */

使用when的另一种方式是作为表达式,这就是您希望语句返回值的时候。

在这种情况下,您必须填写所提供类型的所有可能情况,或者如果类型不能验证所有其他选项,例如else,{{1} }

例如:

Int

要解决此问题,您需要在所有这种情况下返回相同的类型

String

我希望我的解释能够回答您的问题,如果不是这样,欢迎您发表评论。