2017-08-18 95 views
3

如何在全球範圍內象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中科特林。希望的問題很明顯。

回答

3

你提的一個是class property

對於你的情況,你需要在Activity類申報TextView並通過調用onCreate()findViewById()做作業。

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() 
    } 
} 
+0

不客氣。你也可以看看一些例子[這裏](https://github.com/antoniolg/Kotlin-for-Android-Developers)。 – BakaWaii

0

你是什麼意思與「全球」?您提供的代碼與Kotlin中的var tv: TextView匹配,您可以在Java代碼中的相同位置使用它。

+1

var電視:TextView顯示一個錯誤,說對象應該初始化注意。全局意味着我必須以不同的功能訪問對象。 –

+0

@SARATH V你必須澄清一下你的問題。你的意思是階級屬性?也許在Java中給出一個完整的代碼示例。 – BakaWaii

0

你的意思是公開課?還是你的意思是單身? 對於公開課你就必須聲明它們的公共(在科特林他們默認都是公有的,所以你不必做任何事情比把它們聲明以上)。

對於單身人士,你可以看看Object Declarations (Singletons in Kotlin)