안드로이드 개발을 처음 시작하는 분들은 XML 파일에서 설정한 ID를 MainActivity.kt 파일에서 어떻게 사용하는지 고민할 수 있습니다. 특히, 이전에 사용되던 방법이 현재에는 작동하지 않는 경우가 많아 여러 교제를 봐도 시작부터 진행이 막혀버리는 경우가 발생하기도 합니다. 이 글에서는 이전 방법이 잘 작동하지 않는 이유와 새로운 방법을 통해 문제를 해결하는 방법을 안내합니다.

예전의 방법: Kotlin Android Extensions

이전에 Android 개발자들이 자주 사용하던 방법 중 하나는 Kotlin Android Extensions라는 플러그인을 활용하는 것이었습니다. 이 플러그인을 사용하면 XML 레이아웃 파일에서 설정한 ID를 Kotlin 파일에서 직접 변수처럼 사용할 수 있었습니다. 예를 들어, XML에서 TextViewid="myTextView"를 설정했다면, Kotlin 파일에서는 myTextView라는 변수처럼 바로 사용할 수 있었죠.

myTextView.text = "Hello, World!"

이 방법의 가장 큰 장점은 findViewById 메서드를 사용할 필요 없이 간결하게 코드를 작성할 수 있다는 점이었습니다. 하지만, Kotlin Android Extensions는 몇 가지 단점과 유지보수 문제로 인해 더 이상 사용이 권장되지 않게 되었습니다.

새로운 접근법: View Binding

Google은 Kotlin Android Extensions를 대체할 새로운 방법으로 View Binding을 권장하고 있습니다. 이 방법은 코드의 안전성을 높이고, 런타임 에러를 줄이는 데 더 효과적입니다. 이 방법을 사용하면 XML 파일과 직접 연결되는 바인딩 클래스를 통해 뷰에 접근할 수 있습니다. 이 과정은 다음과 같습니다:

(1) 프로젝트 설정: View Binding을 사용하려면 build.gradle 파일에 다음 코드를 추가합니다.

android {
    ...
    buildFeatures {
        viewBinding = true
    }
}

(2) 바인딩 클래스 생성: activity_main.xml 파일이 있다면, Android Studio가 자동으로 ActivityMainBinding이라는 클래스를 생성합니다.

(3) 임포트 문 추가: MainActivity.kt 파일 상단에 다음과 같은 임포트 구문을 추가합니다.

import com.sample.myProject.databinding.ActivityMainBinding

(4) 뷰에 접근하기: MainActivity.kt에서 다음과 같이 View Binding을 사용하여 뷰에 접근할 수 있습니다.

class MainActivity : AppCompatActivity() {
    // View Binding 객체 선언
    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // View Binding 초기화
        binding = ActivityMainBinding.inflate(layoutInflater)
        // setContentView를 binding.root로 설정
        setContentView(binding.root)

        binding.myTextView.text = "Hello, World!"
        
        // Edge-to-Edge 모드 활성화
        enableEdgeToEdge()
        // 시스템 창 삽입을 처리하는 코드
        ViewCompat.setOnApplyWindowInsetsListener(binding.main) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }
    }
}

결론

기존의 Kotlin Android Extensions 방식이 작동하지 않는 경우, View Binding을 통해 문제를 해결할 수 있습니다. 이 방법은 최신 Android Studio에서 권장되는 방식으로, 코드의 안정성을 높이고 오류를 줄이는 데 도움이 됩니다. 이 글을 통해 새로운 방법을 적용하여 개발에 도움을 받으시길 바랍니다. Happy coding!