Kotlin新手在此;
我正在努力完成一个教程,https://developer.android.com/guide/topics/ui/floating-action-button
我在一个基本活动示例代码中看到了一个findViewById<FloatingActionButton>(R.id.fab)
,其中的<FloatingActionButton>
部分让我很反感
findViewById<FloatingActionButton>(R.id.fab).setOnClickListener { view ->
Snackbar.make(view, getString(R.string.MySnackBar), Snackbar.LENGTH_LONG)
.setAction("Action", null).show()
我很困惑,因为在其他示例代码中,我看到val rollButton: Button = findViewById(R.id.roll_button)
第一个findViewById<FloatingActionButton>
是一个接口吗?如果是,为什么它需要一个接口,而第二个则通过按原样传递按钮来工作?
我是误解了语法,还是遗漏了一个概念?
我确信我错过了这个谜题的一部分,但没有看到。
先发制人地感谢你的任何帮助或医生,你可以推荐我来解释它!
findViewById()
需要被告知预期的视图类型。您可以通过以下两种方式之一实现:
- 通过显式指定变量的类型
val button: Button = findViewById(R.id.button)
- 通过向
findViewById()
传递类型参数
val button = findViewById<Button>(R.id.button)
你当然可以把两者结合起来,但只需要一个。
就我个人而言,我更喜欢第一种选择,因为它避免了平台类型的推断。