ABOUT ME

작은 디테일에 집착하는 개발자

Today
-
Yesterday
-
Total
-
  • [Android] View Binding (feat. 뷰 바인딩 전 늘 하는 사전 작업)
    IT Study/Android 2024. 1. 27. 13:57
    728x90

    Android에서 뷰 바인딩을 하기 위해서는 사전 작업이 필요합니다.

    이 사전 작업은 무엇이며, 각 코드는 어떤 역할을 하는지, 왜 이것이 필요한지에 대해 이번 블로그 글에서 다뤄보려고 합니다.

     

    📁 Gradle 파일에 Sync 하기

    viewBinding {
        enable = true
    }

     

    🛰️ Activity 파일에 binding 가져오기

    class MainActivity : AppCompatActivity() {
        private lateinit var binding: ActivityMainBinding
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            binding = ActivityMainBinding.inflate(layoutInflater)
            setContentView(binding.root)
            
            // View Binding ...
        }
    }

     

    2-1. Activity 클래스에 AppCompatActivity 상속하여 선언하기

    이 부분은 MainActivity라는 이름의 클래스를 선언하는 부분입니다.

    이 클래스는 AppCompatActivity를 상속받아서, Android 앱의 기본적인 생명주기를 관리할 수 있습니다.

    class MainActivity : AppCompatActivity() {

     

    2-2. lateinit 키워드를 사용해 ActivityMainBinding 타입의 변수를 선언하기

    lateinit 키워드는 이 변수가 나중에 초기화될 것임을 의미하는데요, 선언과 동시에 초기화하지 않아도 된다는 것입니다.

    ActivityMainBinding은 XML 레이아웃 파일이 컴파일 될 때 자동으로 생성되는 클래스로,

    이를 통해 레이아웃에 있는 뷰를 직접 참조할 수 있습니다.

    private lateinit var binding: ActivityMainBinding

     

    2-3. 액티비티가 생성될 때 호출되는 onCreate() 메서드 오버라이드

    onCreate() 함수는 액티비티가 생성될 때 호출되는 콜백 메서드이며,

    savedInstanceState는 액티비티가 이전에 저장한 상태를 전달받을 수 있습니다.

    액티비티가 재생성되어야 할 경우(화면 방향 변경, 배터리 부족 등) 이 Bundle 객체를 사용하여 액티비티의 상태를 복원합니다.

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

     

    2-4. inflate() 메서드를 사용해 XML 레이아웃을 뷰 객체로 변환 및 binding 변수에 할당하기

    inflate() 메서드는 XML 레이아웃을 뷰 객체로 변환하는 과정을 말합니다.

    이 부분에서 layoutInflater를 사용하여 ActivityMainBinding 객체를 생성하고, 이를 binding 변수에 할당합니다.

    binding = ActivityMainBinding.inflate(layoutInflater)

     

    2-5. setContentView() 메서드 호출, 액티비티의 화면을 구성하는 뷰 설정하기

    setContentView() 메서드는 액티비티의 화면을 구성하는 뷰를 설정합니다.

    여기서 binding.root는 XML 레이아웃 파일의 최상위 뷰를 반환합니다.

    setContentView(binding.root)

     

    🤚🏾 결론

    결론적으로, 이 코드는 MainActivity에서 사용할 뷰를 세팅하고, View Binding을 사용해

    XML 레이아웃의 뷰를 코드에서 직접 참조할 수 있도록 설정하는 과정을 보여줍니다.

    View Binding을 사용하면 findViewById()를 사용하지 않고도 뷰를 참조할 수 있어 코드가 간결해지고,

    null 안정성을 보장받을 수 있습니다.

     

    이런 원리를 알고 코드를 작성한다면... 더 좋겠죠? 그럼 모두 즐코 (즐거운 코딩하라는 뜻) ... ㅎㅎ 👋🏻

Designed by Tistory.