this@MainActivity 的代码是什么意思?

Hel*_*oCW 5 android kotlin

我是 Kotlin 的初学者,以下代码来自网页,this@MainActivity代码中的参数我看不懂,layoutManager = LinearLayoutManager(this@MainActivity)您能告诉我吗?谢谢!

import android.os.Bundle
import android.support.v7.widget.LinearLayoutManager
import android.view.Menu
import android.view.MenuItem
import kotlinx.android.synthetic.main.activity_main.*
import mobi.porquenao.poc.kotlin.R

class MainActivity : BaseActivity() {
    lateinit var listAdapter: MainAdapter

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

        with (list) {
            setHasFixedSize(true)
            layoutManager = LinearLayoutManager(this@MainActivity)
            listAdapter = MainAdapter()
            adapter = listAdapter
        }
    }

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.main, menu)
        return super.onCreateOptionsMenu(menu)
    }

    override fun onOptionsItemSelected(item: MenuItem?): Boolean {
        listAdapter.add()
        list.smoothScrollToPosition(0)
        return true
    }

}
Run Code Online (Sandbox Code Playgroud)

Ale*_*nov 6

它是一个限定的 this,用于MainActivity从外部范围访问 的上下文。

class MainActivity {
    fun onCreate() {
        val list = listOf(1, 2, 3)
        with (list) {
            println(this)              // >>> [1, 2, 3]
            println(this@MainActivity) // >>> MainActivity@2a84aee7
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在 Kotlin文档中阅读有关此方法的更多信息。


Nya*_*ock 0

这就是类似于的上下文

layoutManager = LinearLayoutManager(this)
Run Code Online (Sandbox Code Playgroud)