如何在 kotlin 中全局声明对象,就像在java TextView tv;
中一样。
或者在不同方法/函数中调用相同变量的任何方法。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val textView: TextView = findViewById(R.id.texfirst) as TextView
textView.setOnClickListener {
Toast.makeText(applicationContext,"Welcome to Kotlin ! $abc "+textView.text, Toast.LENGTH_LONG).show()
}
myFunction(textView)
}
fun myFunction(mtextv : TextView) {
Toast.makeText(applicationContext,"This is new $abc "+mtextv.text, Toast.LENGTH_LONG).show()
}
请参阅上面的代码我将TextView
参数的功能分开。我想要第二个函数的TextView
对象。我的问题是:是否可以在没有参数的情况下调用函数,我能够在TextView
获取myFunction()
对象。
在android studio中学习kotlin。希望问题很清楚。
答案 0 :(得分:12)
你提到的那个是class property。
对于您的情况,您需要在TextView
班级中声明Activity
并通过致电findViewById()
中的onCreate()
来完成作业。
class YourActivity {
lateinit var textView: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
textView = findViewById(R.id.texfirst) as TextView
//implementation
}
fun myFunction() {
Toast.makeText(applicationContext, "This is new $abc " + textView.text, Toast.LENGTH_LONG).show()
}
}
答案 1 :(得分:0)
你的意思是公共课吗?或者你的意思是单身人士? 对于公共课程,你只需要将它们声明为公开课程(在Kotlin中,默认情况下它们是公开的,因此除了声明它们之外,你不必做任何其他事情)。
对于单身人士,您可以查看Object Declarations (Singletons in Kotlin)