728x90
반응형
* 본 포스팅은 홍드로이드님의 강좌를 참고하였습니다.
* 코틀린의 장점이 xml 파일에 있는 view들의 id에 바로 접근할 수 있다는 것입니다.
* 하지만, 2021년이 되면서 코틀린 익스텐션이 지원이 중단되어서 뷰 바인딩을 사용해야합니다.
* 안드로이드 프로젝트 폴더에 Gradle Scripts에서 build.gradle(Module: ProjectName)을 클릭!
android {
buildFeatures {
viewBinding true
}
}
* 위와 같은 소스를 추가하고 Sync Now(소스가 바뀌면 화면 오른쪽 상단에 나타남) 버튼 클릭!
* activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/etId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="아이디를 입력하세요"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvResult"
app:layout_constraintVertical_bias="0.276" />
<TextView
android:id="@+id/tvResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btnGetText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="텍스트가져오기"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/etId" />
</androidx.constraintlayout.widget.ConstraintLayout>
* MainActivity.kt
package com.example.edittextkt
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import com.example.edittextkt.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
//전역변수로 바인딩 객체 선언
private var vBindg: ActivityMainBinding? = null
// 매번 null체크를 할필요없이 편의를 위해 바인딩 변수 재선언
private val binding get() = vBindg!!
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//setContentView(R.layout.activity_main)
//자동생성된 뷰 바인딩 클래스 내부 inflate 메소드 활용하여
//바인딩 클래스의 인스턴스 생성
vBindg = ActivityMainBinding.inflate(layoutInflater)
//레이아웃 내부 최상위 위치 뷰 표시
setContentView(binding.root)
//binding변수를 이용하여 xml 파일 내의 뷰 id 접근가능
binding.btnGetText.setOnClickListener(View.OnClickListener {
//버튼 이벤트 : 눌렀을 때 입력상자에 있는 텍스트를 텍스트 뷰에 띄우기
var resultText = binding.etId.text.toString()//editText의 text를 변수에 저장하기
//TextView에 값 표시하기
binding.tvResult.setText(resultText)
})
}
override fun onDestroy() {
//binding 클래스 인스턴스 참조 정리
vBindg = null
super.onDestroy()
}
}
728x90
반응형
'Android' 카테고리의 다른 글
[부스트코스:안드로이드 프로그래밍] 프로젝트 B . 좋아요와 한줄평 리스트 (0) | 2021.03.01 |
---|---|
[안드로이드 스튜디오 : Socket 활용, 간단한 쿵쿵따 게임 앱 만들기 with 리눅스 서버(Ubuntu,우분투), 안드로이드 클라이언트 (0) | 2021.02.18 |
[부스트코스:안드로이드 프로그래밍] 프로젝트 A . 영화 상세 화면 만들기 (0) | 2021.02.02 |
[안드로이드 스터디 : 수강신청 앱 만들기2] (0) | 2021.01.30 |
[안드로이드 스터디 : 수강신청 앱 만들기] (2) | 2021.01.30 |