Kotlin para Android. tostada

En diferentes ejemplos de Kotlin para Android, veo brindis ("Some message …") o toastLong ("Some long message"). Por ejemplo:

view.setOnClickListener { toast("Click") } 

Según tengo entendido, es una function de extensión para la actividad.

¿Cómo se define esta function de toast () y dónde (en qué lugar) para poder usarla a través del proyecto?

Puede ser una function de extensión para Context :

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

Puede ubicar esto en cualquier parte de su proyecto, donde exactamente depende de usted. Por ejemplo, puede definir un file mypackage.util.ContextExtensions.kt y ponerlo allí como una function de nivel superior.

Siempre que tenga acceso a una instancia de Context , puede importar esta function y usarla:

 import mypackage.util.ContextExtensions.toast fun myFun(context: Context) { context.toast("Hello world!") } 

En realidad, es una parte de Anko , una extensión para Kotlin. La syntax es la siguiente:

 toast("Hi there!") toast(R.string.message) longToast("Wow, such a duration") 

En su build.gradle nivel de build.gradle , agregue compile "org.jetbrains.anko:anko-common:0.8.3"

Añada import org.jetbrains.anko.toast a su actividad.

Es simplemente una function de extensión para Context (como ya se señaló).

Puede encontrar muchas funciones de extensión de Android pnetworkingefinidas en Anko , que es probablemente lo que también utilizan muchos de los tutoriales.

Solo para agregar la respuesta de @nhaarman -> es probable que desee agregar el soporte resourceId también

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

He encontrado una manera muy fácil de tostar desde el enlace dado https://gist.github.com/felipearimateia/ee651e2694c21de2c812063980b89ca3 . En este enlace se usa Actividad en lugar de Context. Intentalo.

Para hacer clic en el button o cualquier método nested, haga esto:

 Toast.makeText(this@MainActivity, "Its toast!", Toast.LENGTH_SHORT).show(); 
  • Buscando una solución alternativa para el constructor primario de la class de datos vacíos de kotlin
  • Android Studio no comstack cambios hasta que se comstack por segunda vez con Kotlin
  • ¿Por qué IntelliJ Idea no reconoce mis testings de Spek?
  • Pruebas de Espresso con Kotlin
  • Kotlin: confusión con los generics
  • No se puede resolver el símbolo kotlinOptions (en la construcción de Gradle)
  • Kotlin: Saltando Corutinas
  • ¿Qué es la testing (0) en este fragment de kotlinlang.org?
  • Anotación JvmOverloads para constructor primario de class
  • Bloque de initialization estática en Kotlin
  • Kotlin: Superclass no es accesible desde el rasgo