kotlin

时间:2017-08-18 07:48:03

标签: android-studio kotlin declaration

如何在 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。希望问题很清楚。

2 个答案:

答案 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)