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

标签 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
    }

}

最佳答案

这是一个 合格 this , 用于访问 MainActivity来自外部范围的上下文。

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

您可以在 Kotlin documentation 中阅读有关此方法的更多信息.

关于android - this@MainActivity 的代码是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45502578/

相关文章:

android - 色带Android解决方案

c++ - 静态库的 undefined reference 和奇怪的内容

kotlin - 如何在 Kotlin 中为 Array 的 Companion 对象编写扩展方法?

java - 编译的kt文件由字节码组成?

c# - 游戏脚本或其他自定义代码包含 OnMouse_ 事件处理程序

java - fragment 数组中 "this"上的第一个参数类型错误

android - RC 连接错误 : setSDP Error: Failed to set remote offer sip: Called with SDP without DTLS fingerprint

android - "This type is final so it cannot be inherited from"- ViewPager2

android - 从SavedInstanceState获取自定义类型的列表时获取IllegalStateException

android - Kotlin中view.setOnLongClickListener和view.onClick的比较