适用于Android的Kotlin。 烤面包
在Android的不同的Kotlin示例中,我看到烤面包(“Some message …”)或toastLong(“Some long message”)。 例如:
view.setOnClickListener { toast("Click") }
据我所知,这是一个活动的扩展功能。
如何定义这个toast()函数和哪里(在什么地方)能够通过项目使用它?
它可以是Context
的扩展功能:
fun Context.toast(message: CharSequence) = Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
你可以把它放在你的项目的任何地方,完全取决于你。 例如,您可以定义一个文件mypackage.util.ContextExtensions.kt
并将其作为顶级函数放在那里。
只要你有权访问一个Context
实例,你可以导入这个函数并使用它:
import mypackage.util.ContextExtensions.toast fun myFun(context: Context) { context.toast("Hello world!") }
它实际上是Anko的一部分,是Kotlin的延伸。 语法如下:
toast("Hi there!") toast(R.string.message) longToast("Wow, such a duration")
在您的应用程序级build.gradle
,添加compile "org.jetbrains.anko:anko-common:0.8.3"
添加import org.jetbrains.anko.toast
到您的活动。
这只是Context
的扩展功能(就像其他人指出的一样)。
你可以在Anko中找到很多预定义的android扩展函数,这也许是许多教程使用的。
只需添加@ nhaarman的答案 – >您可能还想添加resourceId
支持
fun Context.toast(resourceId: Int) = toast(getString(resourceId)) fun Context.toast(message: CharSequence) = Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
我已经找到了非常简单的方法来给予链接https://gist.github.com/felipearimateia/ee651e2694c21de2c812063980b89ca3 。 在这个链接中使用Activity而不是Context。 尝试一下。
对于按钮单击或任何嵌套的方法,请执行此操作:
Toast.makeText(this@MainActivity, "Its toast!", Toast.LENGTH_SHORT).show();