2016-04-24 3 views
17

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

view.setOnClickListener { toast("Click") } 

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

Как определить эту функцию toast() и где (в каком месте) использовать ее в проекте?

ответ

29

Это может быть функция расширения для 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!") 
} 
1

Это просто функция расширения для Context (как и другие отметили, уже есть).

В Anko вы можете найти множество предопределенных функций расширения Android, что, вероятно, также используется многими учебниками.

17

Это на самом деле часть 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 в вашей деятельности.

1

Просто добавить на ответ @ nhaarman в -> Вы, вероятно, хотите, чтобы добавить поддержку resourceId а

fun Context.toast(resourceId: Int) = toast(getString(resourceId)) 
fun Context.toast(message: CharSequence) = 
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show() 
3

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

Toast.makeText([email protected], "Its toast!", Toast.LENGTH_SHORT).show(); 
0

При использовании Анко с Котлин, внутри фрагмента использовать:

  • activity.toast (» строковое сообщение ") или
  • context.toast (" строковое сообщение ")