코틀린 익스텐션이 2021년 중단된다고 한다.
? 난 2025년에 처음 써보는데
그럼 이제 자동으로 되게 해줘야하는 거 아닌가....
어쨌든,
기존에 textView나 imageView 같은 것들을 참조할 때
id가 "et_id" 라면
var etId = findViewById<EditText>(R.id.et_id)
이렇게 findViewById 를 써서 사용했는데,
ViewBinding을 사용하면 findViewById() 없이
binding 객체를 통해 XML의 View를 바로 접근할 수 있다.
Gradle 파일에서 설정을 해야 한다.
Gradle Scripts -> build.gradle(Module: 프로젝트명) 파일

android 블록의 buildFeatures에서 viewBinding을 true로 설정한다.
android {
...
buildFeatures {
viewBinding = true
}
}

그리고 Sync Now 를 클릭하여 Gradle 파일 수정사항을 반영해준다.
기존에 fineViewById() 사용했을 때 아래와 같이 썼던 MainActivity.kt 파일을 수정해야한다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) { // 액티비티가 최초 실행되면 수행하는 부분
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(R.layout.activity_main)
var btnTest = findViewById<Button>(R.id.btn_test)
var etId = findViewById<EditText>(R.id.et_id)
var etId2 = findViewById<EditText>(R.id.et_id2)
btnTest.setOnClickListener {
var resultText = etId.text.toString()
etId2.setText(resultText)
}
}
}
Activity는 생명주기상 null처리가 필요 없고
onDestroy() 처리도 필요 없다고 한다.
(Activity에서는 View가 Fragment처럼 재사용되지 않기 때문)
- Fragment → View가 onDestroyView()에서 사라짐 → null 처리 필수
- Activity → onDestroy() = Activity 완전 종료
private lateinit var binding: ActivityMainBinding
activity_main.xml 전체 화면을 대표하는 "연결 객체"를 담을 전역 변수를 선언한다.
Activity는 onCreate()에서 초기화하기 때문에 초기화 시점을 미룬다.
(lateinit : 나중에 초기화)
그리고 val 은 lateinit 불가하므로 꼭 var로 선언 **
(초기화 전에 접근하면 에러 !!!)
lateinit var binding 한 줄 설명
Activity의 레이아웃(XML)을 inflate해서 생성된 ViewBinding 객체를 저장하기 위한 변수이며,
onCreate에서 초기화되어 findViewById 없이 View에 접근하게 해준다.
override fun onCreate() 에서
setContentView(R.layout.activity_main)
layout 대신 binding.root 로 변경해준다.
setContentView(binding.root)
결과
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) { // 액티비티가 최초 실행되면 수행하는 부분
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.btnTest.setOnClickListener {
val resultText = binding.etId.text.toString()
binding.etId2.setText(resultText)
}
}
}

이렇게 id 준 것을 사용할 수 있다.
'앱 개발 > Andriod Studio' 카테고리의 다른 글
| [Android Studio] 화면 구성하는 방법 (액티비티 코드, 레이아웃 XML) (0) | 2026.01.15 |
|---|---|
| [Android Studio] Compose 사용해보기 (0) | 2026.01.13 |
| [Android Studio] 단축키 & (Ctrl + Shift + Space) (0) | 2026.01.12 |
| [Android Studio] 인터넷 연결하기 (view Binding) (0) | 2026.01.12 |
| [Andriod Studio] 다운로드 및 설치 (0) | 2026.01.02 |