[Android/Kotlin] activity와 fragment에서 view binding 사용법

2022. 11. 22. 23:43·공부/Android Studio
728x90
view binding을 사용하면 view에 존재하는 값들에 접근할 수 있다.

 

이전에는 view에 존재하는 값들에 접근하기 위해서는 해당 ID를 사용해서 findViewById를 사용하였다.

 

이제는 view binding을 사용하면 쉽게 접근할 수 있다.

 

먼저 앱 수준의 build.gradle에 들어간다.

 

코드를 보면 android로 싸여있는 코드를 확인할 수 있다.

 

그 안에 다음과 같은 코드를 적으면 된다.

viewBinding{
    enabled=true
}

android에 들어있는 모습을 보면 아래와 같다.

android {
    namespace 'com.example.practiceapplication'
    compileSdk 32

    defaultConfig {
        applicationId "com.example.practiceapplication"
        minSdk 24
        targetSdk 32
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = '1.8'
    }
    viewBinding{
        enabled=true
    }
}

이후 우측 상단의 sync now를 누르면 적용이 된다.

 

activity와 fragment에서 view binding 사용법이 약간 다른데 그 차이점을 위주로 포스팅해보려 한다.

 

Activity

새로운 프로젝트를 생성하고 MainActivity 코드를 보면 아래와 같을 것이다.

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

여기서 binding을 선언하고 사용해야 한다.

 

보통은 onCreate에서만 사용하는 것이 아닌 다른 함수에서도 사용하므로 lateinit을 사용하여 초기화를 나중에 하겠다.

 

lateinit var binding : 타입

위와 같이 선언을 해야하는데 타입의 경우 xml 파일 이름을 보면 알 수 있다.

 

우리는 메인 액티비티에 접근하려 하므로 메인 액티비티 xml 파일의 이름을 확인한다.

 

activity_main으로 되어있다면 언더바를 없애고 시작 단어를 전부 대문자로 바꾸고 Binding을 붙여주면 된다.

class MainActivity : AppCompatActivity() {
    lateinit var binding: ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

lateinit을 통해 나중에 초기화를 하겠다고 했으므로 onCreate 함수 내에서 초기화를 해야한다.

 

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

binding을 초기화 해주고 setContentView 안의 파라미터를 binding.root로 바꾸어준다.

 

만약 특정 함수 안에서만 사용한다고 하면 val binding = ActivityMainBinding.inflate(layoutInflater) 처럼 바로 초기화해도 된다.

 

Fragment

fragment도 activity와 흐름은 똑같지만 코드가 살짝 다르다.

 

class SubFragment : Fragment() {
    lateinit var binding:FragmentSubBinding

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding=FragmentSubBinding.inflate(inflater)
        return binding.root
    }
 }



}

선언, 초기화, binding.root 반환의 순서로 이루어져있다.

 

view에 접근

접근 방식은 activity나 fragment나 동일하므로 메인 액티비티를 기준으로 설명하려한다.

 

binding.아이디를 사용해서 해당 아이디를 가진 곳에 접근할 수 있다.

 

버튼을 누르면 textView의 text를 바꾸는 코드를 만들어보겠다.

 

먼저 activity_main.xml 파일에서 textView와 button을 만들고 각각의 id를 txt, btn으로 설정한다.

 

그리고 버튼에 클릭 이벤트를 만들어주면 된다.

class MainActivity : AppCompatActivity() {
    lateinit var binding:ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding=ActivityMainBinding.inflate(layoutInflater)
        binding.btn.setOnClickListener {
            binding.txt.text = "text changed!"
        }
        
        setContentView(binding.root)
    }
}

 

728x90

'공부 > Android Studio' 카테고리의 다른 글

[Android Studio] Firebase와 연결하기  (0) 2022.12.13
[Android/Kotlin] Recycler view 사용법  (0) 2022.12.08
[Android Studio] fragment 사용법 3 (bottom navigation)  (0) 2022.12.01
[Android Studio/Kotlin] fragment 사용법 2 (Action bar 뒤로가기)  (0) 2022.11.30
[Android Studio/Kotlin] fragment 사용법 1 (fragment 교체)  (0) 2022.11.20
'공부/Android Studio' 카테고리의 다른 글
  • [Android/Kotlin] Recycler view 사용법
  • [Android Studio] fragment 사용법 3 (bottom navigation)
  • [Android Studio/Kotlin] fragment 사용법 2 (Action bar 뒤로가기)
  • [Android Studio/Kotlin] fragment 사용법 1 (fragment 교체)
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    embedding
    ci/cd
    codetree
    Vector Store
    bfs
    다익스트라
    code tree
    푸쉬 알람
    binary search
    RNN
    openvidu 배포
    스택
    AWS Lambda
    nn.RNN
    ChatPromptTemplate
    influxDB CLI
    파이썬
    parametric search
    Merge
    스프링 OAuth2
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[Android/Kotlin] activity와 fragment에서 view binding 사용법
상단으로

티스토리툴바