Kotlin для Android. Тост

В разных примерах Kotlin для Android я вижу тост («Some message …») или toastLong («Некоторое длинное сообщение»). Например:

view.setOnClickListener { toast("Click") } 

Насколько я понимаю, это функция расширения для Activity.

Как определить эту функцию 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 .

Для нажатия кнопки или любого вложенного метода сделайте следующее:

 Toast.makeText(this@MainActivity, "Its toast!", Toast.LENGTH_SHORT).show(); 

Это просто функция расширения для 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() 

Я нашел очень легкий способ Toast из данной ссылки https://gist.github.com/felipearimateia/ee651e2694c21de2c812063980b89ca3 . В этой ссылке вместо контекста используется действие. Попробуй.