首页 > 解决方案 > “this”关键字实际上是如何在 Intent 构造函数争论中起作用的?

问题描述

Intent contrucotr 的论点需要 Context 类的对象,但在这段代码中,我正在传递“this”,这意味着 MainActivity 类对象的对象。这个怎么运作?因为它需要上下文类实例,但我正在传递 MainActivity 的实例。

const val EXTRA_MESSAGE = "com.example.myfirstApp.MESSAGE"

class MainActivity : AppCompatActivity() {

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

    fun sendMessage(view: View){
        val editText = findViewById<EditText>(R.id.editText)
        val message = editText.text.toString()
        val intent =Intent(this,DisplayMessageActivity::class.java).apply{  
// if I use MainActivity() instead of this , gives me error  
            putExtra(EXTRA_MESSAGE, message)
        }
        startActivity(intent)
    }
}

在这里,this表示 MainActivity 的实例,但如果我使用它MainActivity()而不是this它会给我错误。而thisMainActivity()在这里是一样的。

标签: androidandroid-intentkotlinthis

解决方案


在 AndroidActivity中,Service, BroadcastReceiver,Application都扩展了Context. 所以你可以通过它们来代替Context.

你可以在这里看到一个Activity类扩展的所有类。


推荐阅读