web-dev-qa-db-fra.com

Kotlin pour Android. Pain grillé

Dans différents exemples Kotlin pour Android, je vois toast ("Some message ...") ou toastLong ("Some long message"). Par exemple:

view.setOnClickListener { toast("Click") }

Si je comprends bien, il s’agit d’une fonction d’extension pour activité.

Comment définir cette fonction toast () et où (à quel endroit) pour pouvoir l’utiliser dans le projet?

39
Andrey

Ce peut être une fonction d’extension pour Context:

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

Vous pouvez placer ceci n'importe où dans votre projet, là où vous le souhaitez. Par exemple, vous pouvez définir un fichier mypackage.util.ContextExtensions.kt et le placer là en tant que fonction de niveau supérieur.

Chaque fois que vous avez accès à une instance Context, vous pouvez importer cette fonction et l'utiliser:

import mypackage.util.ContextExtensions.toast

fun myFun(context: Context) {
    context.toast("Hello world!")
}
60
nhaarman

C'est en fait une partie de Anko , une extension pour Kotlin. La syntaxe est la suivante:

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

Dans votre niveau d'application build.gradle, ajoutez implementation "org.jetbrains.anko:anko-common:0.8.3"

Ajoutez import org.jetbrains.anko.toast à votre activité.

32
Muz

Il s’agit d’une solution à une ligne à Kotlin:

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

Si vous utilisez Anko with Kotlin , inside fragment utilisez soit:

  • activity.toast ("message de chaîne") ou
  • context.toast ("message de chaîne")
2
vishnu benny

J'ai trouvé un moyen très facile de griller à partir d'un lien donné https://Gist.github.com/felipearimateia/ee651e2694c21de2c812063980b89ca3 . Dans ce lien, l'activité est utilisée à la place du contexte. Essayez-le.

2
Khyati Fatania

C’est simplement une fonction d’extension pour Context (comme d’autres déjà souligné). 

Vous pouvez trouver un grand nombre de fonctions d’extension Android prédéfinies dans Anko , qui est probablement ce que beaucoup de tutoriels utilisent également.

1
Lovis

Juste pour ajouter la réponse de @ nhaarman -> vous voulez probablement ajouter le support resourceId

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

Essaye ça

En activité

Toast.makeText(applicationContext, "Test", Toast.LENGTH_LONG).show()

ou

Toast.makeText(this@MainActiivty, "Test", Toast.LENGTH_LONG).show()

Dans le fragment

Toast.makeText(activity, "Test", Toast.LENGTH_LONG).show()
0
bala

Toast personnalisé avec couleur de fond Taille du texte ET AUCUN XML fichier gonflé .__ Essayez le code sans définir la couleur de fond

    fun theTOAST(){

    val toast = Toast.makeText(this@MainActivity, "Use View Person List",Toast.LENGTH_LONG)
    val view = toast.view
    view.setBackgroundColor(Color.TRANSPARENT)
    val text = view.findViewById(Android.R.id.message) as TextView
    text.setTextColor(Color.BLUE)
    text.textSize = (18F)
    toast.show()
}
0
Grendel

Téléchargez le code source ici ( Custom Toast In Android Kotlin

fun Toast.createToast(context: Context, message: String, gravity: Int, duration: Int, backgroucolor: String, imagebackgroud: Int) {
        val inflater: LayoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
        /*first parameter is the layout you made
        second parameter is the root view in that xml
         */
        val layout = inflater.inflate(R.layout.custom_toast, (context as Activity).findViewById(R.id.custom_toast_container))

        layout.findViewById(R.id.tv_message).text = message
        layout.setBackgroundColor(Color.parseColor(backgroucolor))
        layout.findViewById(R.id.iv_image).iv_image.setImageResource(imagebackgroud)
        setGravity(gravity, 0, 100)
        setDuration(Toast.LENGTH_LONG);

        setView(layout);
        show()
    }

Merci!

0
Deepshikha Puri

la façon dont je l'utilise simplement créant un Object/Class

object UtilKotlin {
    fun showMessage(context: Context, message: String) {
        Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
    }
}

et en appelant la méthode

UtilKotlin.showMessage(activity, "Sets 0 !") // in activity trying this
0
Sam