android - 为什么在此代码中使用this @ MainActivity?

标签 android kotlin label this

我在 MainActivity 类中看到了这样的代码:

class MainActivity : AppCompatActivity() {
    private val languages = arrayOf("One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten")
    private var index = 0
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        textSwitcher.setFactory {

            val textView = TextView(this@MainActivity) //the line I was 
                                                       //talking about.

            textView.gravity =  Gravity.CENTER_HORIZONTAL
            textView.textSize = 32f
            textView.setTextColor(Color.BLACK)
        }
        textSwitcher.setText(languages[index])
    }
}
但是我没明白。 “”关键字已经不代表 MainActivity 吗?如果是这样,为什么需要标签?
我已经编写了该代码以了解“this”关键字。
class class1(c:class2){
    init{
        c.output()
    }
}
class class2{
    init{
        class1(this) // this" keyword represent the class2
    }
    fun output(){
        println("Hello.")
    }
}
fun main(){
    val x = class2()
}

最佳答案

如果该行代码在apply lambda内部或某个对象内部,或在其他情况下; lambda可以使用相同的关键字this对其自身进行引用。因此,要指定以范围名称作为标签的适当引用@。
因此,基本上,label用于指定其他lambda或内部类等内部类的范围,

关于android - 为什么在此代码中使用this @ MainActivity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62982451/

相关文章:

android - 按钮 onClick 和 ListView onItemClick

javascript - 自动刷新天气预报脚本

kotlin - ZonedDateTime 的比较运算符与比较方法

java - 防止单行 TextView 椭圆受约束布局中的标签约束

影响样式的 Input 和 Label 元素的 HTML 顺序

c# - Windows 窗体中标签的自动换行

android - 如何为 React Native 的 64 位版本准备我的应用程序?

项目可聚焦时的 Android ListView,禁用点击

测试类中的 java.util.logging.Logger

java - 最后一项上的 Jfreechart TimeSeriesChart 标签