簡體   English   中英

Kotlin:實例化類中變量的未解析引用

[英]Kotlin: Unresolved Reference for variable from instantiated class

我制作了一個耳部訓練應用程序,希望該級別可自定義。 因此,我有一個具有相同功能的類,分別針對12種音調,因此可以想象一下setDb,setD,setEb等:

class MakeLevel(context: Context) {
    fun setC(something: Boolean): Boolean {
        var c = something
        return c
    }

然后,在我的主要活動(FullscreenActivity)中實例化該類:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_fullscreen)
    makeLevel = MakeLevel(this)
}
companion object {
    lateinit var makeLevel: MakeLevel
}

然后在選擇級別的片段中,執行以下操作:

override fun onResume() {
    super.onResume()
    majpentlevelbutton.setOnClickListener { view ->
        FullscreenActivity.makeLevel.setC(true)
        // [same for setD, setE, setG and setA, and false for all the other notes]
        view.findNavController().navigate(R.id.action_levelSelectFragment_to_chromaticFragment)
    }
}

現在出現了我的問題:我想訪問c的值以確定是否發出聲音以及是否應加載c的按鈕,而我找不到解決方法。 例如,我想這樣使用它:

if (c == true) {
    c_button.visibility = View.VISIBLE
}
else {
    c_button.visibility = View.GONE
}

我已經嘗試過cmakeLevel.cFullscreenActivity.makeLevel.c等。 每次獲得Unresolved reference 所以我的問題是如何獲得var c的參考?

到目前為止, c只是方法setC的局部變量。 如果您需要方法外的值,則需要定義一個屬性:

class MakeLevel(context: Context) {
    var c = initValue
    fun setC(something: Boolean){
        c = something
    }
}

現在,您可以使用以下命令訪問此變量: FullscreenActivity.makeLevel.c

您的問題是您試圖訪問超出其范圍的變量。

 class MakeLevel(context: Context) { private var c = initValue fun setC(something: Boolean){ c = something } fun getC(something: Boolean) { return c } if (getC() == true) c_button.visibility = View.VISIBLE else c_button.visibility = View.GONE } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM