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(); 
  • Kotlin: Al ejecutar Hello Program obteniendo ClassNotFoundException
  • ¿Hay alguna forma less fea de regresar a la function en Kotlin?
  • Kotlin sortBy en TreeMap
  • Kotlin: delegación de funciones
  • ¿Cómo usar seleccionableButtonBackground en Anko?
  • Retrofit - pasa dos parameters
  • ¿Cómo declaro un parámetro de function para aceptar funciones que arrojan?
  • Crea una rueda giratoria que networkingimensiona su ancho cuando se selecciona un elemento
  • Kotlin, Mockito y Android Test Instrumentation. La propiedad de Lateinit no se ha inicializado
  • ¿Por qué el desplazamiento de una ViewPager antes de cambiar su relleno y el pagemrgin lo levantan por completo?
  • Cómo traducir una interfaz java jna a kotlin