[Kotlin] activity 데이터 전달

김명석·2023년 9월 13일

Kotlin

목록 보기
2/3

viewBinding

viewBinding이란 무엇인가?

viewBinding은 레이아웃 XML 파일에 선언한 뷰 객체를 코드에서 쉽게 이용하는 방법이다. activity에서 findViewByID() 함수를 이용하지 않고 xml 파일에 등록된 뷰 객체를 더 쉽게 사용하기 위해 탄생하게 되었다.

사용법

viewBinding을 이용하여 각 activity 간의 데이터를 전달하려고 한다.
그러기 위해선 우선 bulid.gradle에 다음과 같이 코드를 넣어야한다

viewBinding{
	enabled = true
    }

실제 예시

이를 하게되면 레이아웃 XML파일에 등록된 뷰 객체를 포함하는 클래스가 자동으로 만들어지게 된다. 자동으로 만들어지는 클래스의 이름은 레이아웃 XML의 파일명을 따른다.

자동 생성 예시
activity_main.xml -> ActivityMainBinding

이렇게 자동으로 만들어진 클래스의 inflate() 함수를 호출하면 바인딩 객체를 얻을 수 있다. 이때 인자로layoutInflater를 전달한다.
바인딩 객 체의 root 프로퍼티는 XML의 루트 객체가 자동으로 등록 되므로 화면 출력은 setContentView() 함수에 activityMainBinding.root를 전달하면된다.

실제 예시

    lateinit var activityMainBinding: ActivityMainBinding
    <중략>
    activityMainBinding = ActivityMainBinding.inflate(layoutInflater)

이와 같이 선언함으로써 activity_main.xml의 viewBinding을 해냈다.
이후 activityMainBinding를 사용하는 부분은 아래와 같다.

 activityMainBinding.run{
            textView.run {
                setText("김명석")
            }
            buttonMainToSecondActivity.run{
                setOnClickListener {
                    val intent = Intent(this@MainActivity, SecondActivity::class.java)
                    intent.putExtra("머리", "김명석은 빡빡이가 아닙니다.")
                    startActivity(intent)
                }
            }
        }


위 와 같은 XML 의 @+id/~~~ 형태로 이루어진 id를 .run을 사용하여 관련 함수들을 편리하게 사용할 수 있다. intent에 대한 내용은 추후 다루기로 한다.

0개의 댓글