Kotlin如何从其他类访问主类变量

时间:2020-10-19 12:15:35

标签: kotlin

这是我的主要课程:

package com.example.myProject

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.GridLayout
import androidx.core.view.marginLeft
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    var level : Int = 1

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //...
        var piece = Piece(this, 50)
    }
}

我也有二等班

data class Piece(
    var con: Context,
    var size : Int
) {

    init {
        //...
        //here I want to increment attribute level of the main class
        con.level++
    }
}

但是,即使我将上下文作为参数发送,也无法从那里访问此属性。知道我在做什么错吗?

1 个答案:

答案 0 :(得分:1)

Context类没有level属性,即使具体类型为MainActivity也没有。因此,请参考MainActivity

data class Piece(
    var con: MainActivity,
    var size : Int
) {

这会在MainActivityPiece之间创建循环依赖关系,因此可以将其视为代码气味。没有更多的上下文,很难说出更好的解决方案是什么样的。