class MainActivity : AppCompatActivity() {
//전역 변수로 바인딩 객체 선언
private var mBinding : ActivityMainBinding? = null
// 물음표의 의미는 널일수도 있고, 널이면 널을 줘라.. 라는 의미이다.(널처리)
//매번 null 체크를 할 필요 없이 편의성을 위해 바인딩 변수 재 선언
private val binding get() = mBinding!! //!!의 뜻은 널은 아니다 라고 선언해주는 것이다.
override fun onCreate(savedInstanceState: Bundle?) {//앱이 최초 실행됬을 때 수행한다.
super.onCreate(savedInstanceState)
//기존에 setContentView는 지운다.
//자동 생선된 뷰 바인딩 클래스에서의 inflate라는 메서드를 활용해서
//액티비티에서 사용할 바인딩 클래스의 인스턴스를 생성한다
mBinding = ActivityMainBinding.inflate(layoutInflater)
//getRoot 메서드로 레이어웃 내부의 최상위 위치 뷰의
// 인스턴스를 활용하여 생성된 뷰를 액티비티에 표시 한다.
setContentView(binding.root)
//이제부터 binding 바인딩 변수를 활용하여 마음 껏 xml 파일 내의 뷰 id 접근이 가능해진다.
//뷰 id도 파스칼케이스 + 카멜케이스의 네이밍규칙 적용으로 인해서 ex) tv_message ->
// tvMessage 로 자동 변환이 됩니다.
//파스칼케이스(파스칼표기법): ex) PascalCase 처럼 첫단어를 대문자로 시작하는 표기법이다.
//카멜케이스(카멜 표기법) : ex) camelCase, 단봉낙타 표기법이라고도 부르며,
//각 단어의 첫문자를 대문자로 표기하고 붙여쓰되, 맨처음 문자는 소문자로 표기한다.
//띄어쓰기 대신 대문자로 단어를 구부하는 표기 방식이다.
binding.textView.setText("셋텍스트를 넣었습니다.")
}
//액티비티가 파괴될 때
override fun onDestroy() {
//onDestroy에서 binding class 인스턴스 참조를 정리해주어야 한다.
mBinding = null
super.onDestroy()
}
}