2 votes

Android Studio et Kotlin : référence non résolue:context

J'ai essayé des centaines de façons de résoudre ce problème de référence :

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setSupportActionBar(toolbar)

        val dm = DataManager()
        val adapterCourses = ArrayAdapter<CourseInfo>(context:  this,
                    android.R.layout)

mais en ArrayAdapter<CourseInfo>(context: this, android.R.layout) Je reçois référence non résolue : contexte et je ne sais pas pourquoi.

Android Studio version : 3.3.2 Version de Kotlin : 1.3.21

Quelqu'un peut-il m'aider ?

2voto

V Chapman Points 21

J'ai eu un message d'erreur similaire parce que je n'ai pas importé la Context . Si vous n'avez pas explicitement importé Context essayez d'ajouter cet élément à votre liste d'importation vers le début de votre projet de Activity fichier :

 import android.content.Context

0voto

gpunto Points 1610

La colonne en Kotlin est utilisée pour certaines choses, mais pas lors du passage d'arguments nommés. La syntaxe pour passer un paramètre nommé est parameterName = parameterValue .

Quand vous écrivez context = this lorsque vous passez un paramètre, vous faites simplement référence au paramètre. context de la fonction que vous appelez, en disant explicitement que this doit correspondre à celle context paramètre. Cela n'est pas très utile dans ce cas, sauf si vous voulez être très explicite.

L'utilité de l'utilisation d'arguments nommés apparaît lorsque vous avez affaire à des paramètres facultatifs ou lorsque vous passez les paramètres dans le désordre.
Par exemple

// DECLARATION of function abc
fun abc(s: String = "", i: Int = 0)

// USAGE of function abc passing only an Int
abc(i = 314)

La fonction abc a deux paramètres et ils ont une valeur par défaut. Dans ce cas, vous pouvez éviter de passer un paramètre si les valeurs par défaut vous conviennent. Mais si vous voulez seulement passer i vous pouvez le faire en spécifiant son nom, comme dans l'exemple.

De même, vous pouvez choisir de passer les paramètres dans le désordre, dans ce cas, vous ferez :

abc(i = 314, s = "something")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X