μλ² Google I/O 2018 μμ λ°νν Android Jetpack μ Android KTX κ° ν¬ν¨ λμλ€.
Android KTX μ λͺ©μ μ Kotlinμ κ°κ²°ν¨κ³Ό κΈ°λ₯μ νμ©νμ¬ Android κ°λ°μ λ³΄λ€ κ°κ²°νκ³ μΎμ νκ³ κ΄μ©μ μΌλ‘ λ§λλ κ²μ΄λ€.
Android KTX λ₯Ό νλ‘μ νΈμ μ¬μ©νκΈ° μν΄μλ build.gradle νμΌμ μλμ²λΌ μΆκ° νλ€.
repositories {
google()
}
build.gradle(Project: νλ‘μ νΈλͺ ) λΆλΆ
dependencies {
implementation 'androidx.core:core-ktx:1.0.0-alpha1'
}
build.gradle(Module: app) λΆλΆ
import kotlinx.android.synthetic.main.<layout>.*
μμ μ²λΌ import ν΄μ μ¬μ©νμ
μ, κ·Έλ λ€λ©΄ μΈμ μ΄λμ μ΄λ»κ² KTX λ₯Ό μ μ©νκ² μΈ μ μμκΉ?
λνμ μΈ μλ‘ κΈ°μ‘΄μ μ°λ¦¬κ° μμ£Ό μ¬μ©νλ findViewById() λ©μλμμ λνλλ€.
findViewById() λ μ‘ν°λΉν°λ νλκ·Έλ¨ΌνΈ λ± λ μ΄μμ νμΌμ μ μΈλ μ¬λ¬κ°μ λ·°(view)λ‘ κ΅¬μ±λ νλ©΄μμ νΉμ λ·°μ μΈμ€ν΄μ€λ₯Ό μ»κΈ°μν΄ μ¬μ©νλ€.
κ·Έλ¬λ λ¬Έμ μ μ λ§μ½ μ΄ λ©μλμμ λ°νν λ·° κ°μ²΄λ₯Ό μλͺ»λ νμ μ λ·°λ‘ μΊμ€ν νκ±°λ λ€λ₯Έ λ μ΄μμμ μ μΈλ IDλ₯Ό μλͺ» μ¬μ©νλ©΄ λ κ°μ λ°ννκ² λλλ°,
μ΄λ μ€μλ‘ λ²κ·Έλ₯Ό λ°μμν€κΈ° λ§€μ° μ¬μ μ°λ¦¬λ€μκ² λ²κ±°λ‘κ² νλ€.
λΏλ§ μλλΌ κ°λ
μ±λ μ₯λ μλκ² λ¨μ΄λ¨λ¦°λ€.
μλνλ©΄ 볡μ‘ν κ΅¬μ‘°λ‘ κ΅¬μ±λ νλ©΄μμ μΌμΌμ΄ findViewByID() λ₯Ό λ·° μΈμ€ν΄μ€λ₯Ό λ°μμΌ νκΈ° λλ¬Έμ μ½λλ§ λͺμ μ€μ μ°¨μ§νκ² λκΈ° λλ¬Έμ΄λ€. (λ΅λ μλ€)
μ¬κΈ°μ μ findViewByID() λν λμ μκΈ°λ₯Ό κΊΌλΈ μ΄μ λ 무μμΌκΉ?
λΉμ°ν Adroid KTX λ μ΄λ° λΆλΆλ€μ κΉλνκ² ν΄κ²°ν΄ μ£ΌκΈ° λλ¬Έμ΄λ€.
Android KTX λ λ·°μ ID λ₯Ό μ¬μ©νμ¬ ν΄λΉ λ·°μ μΈμ€ν΄μ€μ λ°λ‘ μ κ·Ό ν μ μκ² ν΄μ€λ€.
λ€μλ§ν΄, findViewByID() λλ¬Έμ μκΈ΄ λͺμ μ€μ μ½λλ₯Ό λΉμ½μ μΌλ‘ μ€μΌ μ μλ€λ κ²μ΄λ€.
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// findViewById() μ μ¬μ©μν΄λ λ·°μ ID μ μ κ·Όν΄ μ¬μ©κ°λ₯νλ€.
text.text = "hi"
text.setOnClickListener{
Toast.makeText(applicationContext, "hi", Toast.LENGTH_SHORT).show()
}
}
}