这是我的主要课程:
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++
}
}
但是,即使我将上下文作为参数发送,也无法从那里访问此属性。知道我在做什么错吗?
答案 0 :(得分:1)
Context
类没有level
属性,即使具体类型为MainActivity
也没有。因此,请参考MainActivity
:
data class Piece(
var con: MainActivity,
var size : Int
) {
这会在MainActivity
和Piece
之间创建循环依赖关系,因此可以将其视为代码气味。没有更多的上下文,很难说出更好的解决方案是什么样的。