自从Android Studio 3.0 Canary发布以来,我一直在努力学习Kotlin,并且有一些我无法理解的东西。 我试图用Button和TextView做一个简单的Activity。 我不明白为什么Android Studio无法将活动识别为上下文。 在我的代码中,我尝试做一个Toast,但是当我把这个作为参数的上下文时,AS给了我错误。Android Studio 3.0支持Kotlin:作为上下文的活动
错误是:“以下函数都不能用提供的参数调用”。并突出红色
语境下面的代码:
class MainActivity : AppCompatActivity() {
fun AppCompatActivity.toast(message: CharSequence) = Toast.makeText(this, message, Toast.LENGTH_LONG).show()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button = findViewById(R.id.mainButton) as Button
button.setOnClickListener{
[email protected]("proof")
Log.e("asd","proof")
}
}
}
的事情是,当我运行代码,我没有得到任何瑕疵,没有运行时异常。这只是Android Studio中不承认这是上下文
看起来像AS/Kotlin插件中的一个bug。毕竟这是一个安卓工作室3.0的金丝雀版本,所以现在不用担心。 –
我也遇到这个问题,而不使用Kotlin(只是直接Java) –
顺便说一句,有很多漂亮的Anko库,可以帮助你很多这样的情况 - 例如“吐司”是直接出盒 - https://github.com/Kotlin/anko/ – Antek