오랜만에 안드로이드 스튜디오를 업데이트하고 여러 에러가 발생해서 하나하나 고치던 과정에 그 사이에 조금 변화가 있었는데 그 중 하나가 그 동안 사용해 온 Android Extension이 Android studio 4.1 이상에서 deprecate되면서 findViewById를 사용하지 않고도 View에 접근했던 방법이 사라지게 되었다.
동일한 id를 가진 동일한 widget을 중복 사용하는 실수를 범할 수 있다. 전역 네임 스페이스가 오염된다.
그리고 런타임 오류를 일으킬 수 있다.
다시 findViewById를 사용함으로써 정확하게 명시해 사용하는 것을 더 추천한다.
Kotlinnx.android.synthetic 대신 findViewById를 활용한다.
구글에서 소개되었던 ViewBinding이 이제 기본으로 자리 잡았다.
// findViewById 사용
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(findViewById(R.id.toolbar))
findViewById<FloatingActionButton>(R.id.fab).setOnClickListener { view ->
// ...
}
}
}
// ViewBinding 사용
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
setSupportActionBar(binding.toolbar)
binding.fab.setOnClickListener { view ->
}
}
}
ref)https://thdev.tech/android/2020/10/07/Remove-kotlinx-synthetic/