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/

相关文章:

java - 如何从当前 Locale 获取日期时间格式字符串,作为 SimpleDateFormat 的参数

android - 我可以在不解密的情况下使用 JSch 获取加密的 SSH 私钥的类型或指纹吗?

kotlin - Kotlin 的不稳定属性?

android - TextWatcher无法正常使用Android Studio Kotlin

kotlin - 在 kotlin 中是否可以将委托(delegate)分配给 init block 中的属性?

android - 三星 Galaxy S3 未显示在 android visual studio 2012 的选择设备列表单声道中

安卓连接VPN

java - 有没有办法在测试之间停止 micronaut 计划的工作?

android - 在 ScrollView 内的子级上具有权重属性的 LinearLayout

android - 迁移到 android studio 3.0.1