He intentado cientos de formas de resolver este problema de referencia:
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) pero en ArrayAdapter<CourseInfo>(context: this, android.R.layout) obtengo una referencia no resuelta: context y no tengo idea de por qué.
Versión de Android Studio: 3.3.2 Versión de Kotlin: 1.3.21
¿Alguien podría ayudarme?
Recibí un mensaje de error similar porque no importé el Context . Si no ha importado Context explícitamente, intente agregar esto a su lista de importación cerca del inicio de su archivo de Activity :
import android.content.ContextLa columna en Kotlin se usa para algunas cosas, pero no cuando se pasan argumentos con nombre. La sintaxis para pasar un parámetro con nombre es parameterName = parameterValue .
Cuando escribe context = this , mientras pasa un parámetro, simplemente se está refiriendo al context del parámetro de la función que está llamando, diciendo explícitamente que this tiene que corresponder a ese parámetro de context . Esto no es muy útil en este caso a menos que quieras ser muy explícito.
La utilidad de usar argumentos con nombre surge cuando se trata de parámetros opcionales o cuando se pasan los parámetros fuera de orden.
P.ej
// DECLARATION of function abc fun abc(s: String = "", i: Int = 0) // USAGE of function abc passing only an Int abc(i = 314) La función abc tiene dos parámetros y tienen un valor predeterminado. En este caso, puede evitar pasar cualquier parámetro si está de acuerdo con los valores predeterminados. Pero si solo desea pasar i , puede hacerlo especificando su nombre, como se hizo en el ejemplo.
Del mismo modo, puede optar por pasar parámetros fuera de orden, en ese caso, hará lo siguiente:
abc(i = 314, s = "something")