ViewBinding ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๋ทฐ์ ์ํธ์์ฉํ๋ ์ฝ๋๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. ๋ชจ๋์์ ์ฌ์ฉ ์ค์ ๋ ViewBinding์ ๋ชจ๋์ ์๋ ๊ฐ XML ๋ ์ด์์ ํ์ผ์ ๊ฒฐํฉ ํด๋์ค๋ฅผ ์์ฑํฉ๋๋ค. ๋ฐ์ธ๋ฉ ํด๋์ค์ ์ธ์คํด์ค์๋ ์์ํ๋ ๋ ์ด์์์ ID๊ฐ ์๋ ๋ชจ๋ ๋ทฐ์ ์ง์ ์ฐธ์กฐ๊ฐ ํฌํจ๋ฉ๋๋ค.
์์ผ๋ก๋ findViewById ๋์ ๋ทฐ ๋ฐ์ธ๋ฉ์ ์ฐ์
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val textView = findViewById<TextView>(R.id.text_view)
val backBtn = findViewById<Button>(R.id.back_btn)
setContentView(R.layout.activity_main)
textView.text = "This is uncomfortable way"
backBtn.setOnClickListener {
finish()
}
}
private lateinit var binding: ResultProfileBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ResultProfileBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
//ID๋ฅผ ํ๋ํ๋ ์ฐธ์กฐํ์ง ์์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
binding.name.text = viewModel.name
binding.button.setOnClickListener { viewModel.userClicked() }
}
// ์๋๋ก์ด๋ ์คํ๋์ค 4.0 ์ด์์ผ ๋
android {
...
buildFeatures {
viewBinding = true
}
}
// ์๋๋ก์ด๋ ์คํ๋์ค 3.6 ~ 4.0. 3.6๋ณด๋ค ๋ฎ์ผ๋ฉด ์๋จ
android {
...
viewBinding {
enabled true
}
}
private lateinit var binding: ResultProfileBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ResultProfileBinding.inflate(layoutInflater)
val view = binding.root //or setContentView(binding.root)
setContentView(view)
}
inflate๋ xml์ ์๋ ๋ทฐ๋ฅผ ๊ฐ์ฒดํํด์ฃผ๋ ๊ฒ
๋ฐ์ธ๋ฉ ๊ฐ์ฒด์ ์ด๋ฆ์ ๋ ์ด์์ ํ์ผ ์ด๋ฆ์ 'Binding'์ ๋ถ์ฌ ๋ง๋ค์ด์ง๋ค.
๋ ์ด์์ ํ์ผ ์ด๋ฆ์ด activity_main.xml
โก๋ฐ์ธ๋ฉ ํด๋์ค์ ์ด๋ฆ์ ActivityMainBinding
๋ ์ด์์ ํ์ผ ์ด๋ฆ์ด fragment_home.xml
โก๋ฐ์ธ๋ฉ ํด๋์ค์ ์ด๋ฆ์ FragmentHomeBinding