适用于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();