Android Studio 和 Kotlin:未解决的参考:上下文

Ryb*_*cki 6 android kotlin

我尝试了数百种方法来解决这个参考问题:

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)
Run Code Online (Sandbox Code Playgroud)

但在ArrayAdapter<CourseInfo>(context: this, android.R.layout)我得到未解决的参考:上下文中,我不知道为什么。

Android Studio 版本:3.3.2 Kotlin 版本:1.3.21

有人可以帮助我吗?

小智 7

我有类似的错误消息,因为我没有导入Context. 如果您尚未显式导入Context,请尝试将其添加到文件开头附近的导入列表中Activity

 import android.content.Context          
Run Code Online (Sandbox Code Playgroud)


gpu*_*nto 0

Kotlin 中的列用于某些用途,但在传递命名参数时不使用。传递命名参数的语法是parameterName = parameterValue

当您context = this在传递参数时编写 时,您只是引用context正在调用的函数的参数,明确表示该参数this必须与该context参数相对应。在这种情况下这不是很有用,除非你想非常明确。

当您处理可选参数或无序传递参数时,使用命名参数会很有用。
例如

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

// USAGE of function abc passing only an Int
abc(i = 314)
Run Code Online (Sandbox Code Playgroud)

该函数abc有两个参数,并且它们有一个默认值。在这种情况下,如果您同意默认值,则可以避免传递任何参数。 如果您只想传递i,则可以通过指定其名称来完成,如示例中所示。

同样,您可以选择不按顺序传递参数,在这种情况下,您将执行以下操作:

abc(i = 314, s = "something")
Run Code Online (Sandbox Code Playgroud)