Kotlin:实例化变量的未解析引用 class
Kotlin: Unresolved Reference for variable from instantiated class
我制作了一个听力训练应用程序,希望可以自定义级别。所以我有一个 class 对 12 种音调中的每一种都具有相同的功能,所以想象一下 setDb、setD、setEb 等:
class MakeLevel(context: Context) {
fun setC(something: Boolean): Boolean {
var c = something
return c
}
然后我在主 activity (FullscreenActivity) 中实例化 class:
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
}
我试过 c
、makeLevel.c
、FullscreenActivity.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
}
我制作了一个听力训练应用程序,希望可以自定义级别。所以我有一个 class 对 12 种音调中的每一种都具有相同的功能,所以想象一下 setDb、setD、setEb 等:
class MakeLevel(context: Context) {
fun setC(something: Boolean): Boolean {
var c = something
return c
}
然后我在主 activity (FullscreenActivity) 中实例化 class:
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
}
我试过 c
、makeLevel.c
、FullscreenActivity.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
}