2016-10-07 12 views
1

私はAndroidでKotlinをやりたいのですが、私はmutablesにいくつかの問題があります。たとえば、私がTextViewを複数の方法でアクセスしているとします。Kotlinの複数の関数で可変変数を扱うAndroid

var tv: TextView? = null 

override fun onCreate(savedInstanceState: Bundle?) { 
    tv = find(R.id.tv) 
} 

fun clearText(){ 
    tv?.setText("") 
} 

fun setText(text: String) { 
    tv?.setText(text) 
} 

これは動作しますが、私はのTextViewを使用tv?を有するたびにコードのにおいです。これを行うより良い方法はありますか? varの代わりにvalを使用する必要があるように感じますが、それを挿入する方法が見つかりません。

答えて

6

これを解決する方法は2つあります。 LateinitおよびKotlin's Android extensions

Lateinitでは、クラスライフタイムの後半で、null以外の型に値を割り当てることができます。

lateinit var textView: TextView 

override fun onCreate(savedInstanceState: Bundle?){ 
    textView = findViewById(R.id.view_text) 
} 

これで、ヌルチェックなしでアクセスできます。

また、Kotlinの拡張機能を使用することもできます。

はあなたのbuild.gradle

apply plugin: 'kotlin-android' 
apply plugin: 'kotlin-android-extensions' 

にプラグインを追加して、あなたの活動、断片または任意に生成されたアクセサをインポートします。

import kotlinx.android.synthetic.main.layout_name.* 

text_view_id.text = "Hello World!" 
+0

「lateinit」がトリックしました。ありがとう! – Muz

関連する問題