Deprecated Kotlin Android Extensions

park paul·2021년 11월 23일
0

Intro

오랜만에 안드로이드 스튜디오를 업데이트하고 여러 에러가 발생해서 하나하나 고치던 과정에 그 사이에 조금 변화가 있었는데 그 중 하나가 그 동안 사용해 온 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/

profile
Innovation is mine

0개의 댓글