안드로이드 앱(Kotlin|Java)/[2025~] 안드로이드 앱
Part1_Ch02_05 유저 입력값 받아오기
heylo
2025. 2. 3. 14:31
1) Activity
안드로이드 4대 요소 중 하나인 Activity
사용자가 앱과 상호작용하기 위한 진입점
화면이 있고 유저에게 입력값을 받을 수 있는 부분이 있고
입력받은 값을 보여주는 화면이 있다.
Activity 를 능숙하게 관리하고 싶을 때
반드시 알아야하는 것 중 하나가
Activity 의 Life cycle (수명주기) 이다.
상태변경에 이를 수 있는 방법이나
앱 간의 이동, 앱 간의 데이터 사이 관계도 알아야 한다.
이런 부분은 부록을 통해 학습 가능.
2) UI 요소 가져오고, 동작 처리 확인하기
2-1) 각 View 의 id 설정
@+id 를 사용하면 아이디를 추가한다는 의미이다.
id=”@+id/…”
숫자 텍스트뷰와, 초기화 버튼, +버튼에 id 를 주자.
<TextView
android:id="@+id/numberTextView"
...
<Button
android:id="@+id/resetButton"
...
<Button
android:id="@+id/plusButton"
2-2) UI 요소 가져오기 ( findViewByID )
findViewById<TextView>(R.id.numberTextView)
// UI 요소 가져오기
val numberTextView = findViewById<TextView>(R.id.numberTextView)
val resetButton = findViewById<Button>(R.id.resetButton)
val plusButton = findViewById<Button>(R.id.plusButton)
2-3) 동작에 대한 연산처리 확인하기 ( Log.d )
// 동작에 대한 연산 처리
// 클릭에 대한 처리
resetButton.setOnClickListener{
// 리셋 버튼의 클릭에 대한 리스닝을 하고 있는지 확인하기 위해 Log 찍기
Log.d("onClick", "리셋 버튼이 클릭되었습니다.") // 디버깅용이므로 Log.d
}
plusButton.setOnClickListener{
// 리셋 버튼의 클릭에 대한 리스닝을 하고 있는지 확인하기 위해 Log 찍기
Log.d("onClick", "+ 버튼이 클릭되었습니다.") // 만약 에러용이면 Log.e
}
여러 가지 디버깅 수준으로 Log 를 찍을 수 있는데
그 중 Log.d 는 디버깅용이고
그 중 Log.e 는 에러용이다. ( 빨간글씨 )
Log 는 Android Studio 의
Logcat 에서 확인할 수 있다.
2-4) 전체 코드
MainActivity.kt
package com.part1.chapter2
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.TextView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// UI 요소 가져오기
val numberTextView = findViewById<TextView>(R.id.numberTextView)
val resetButton = findViewById<Button>(R.id.resetButton)
val plusButton = findViewById<Button>(R.id.plusButton)
// 동작에 대한 연산 처리
// 클릭에 대한 처리
resetButton.setOnClickListener{
// 리셋 버튼의 클릭에 대한 리스닝을 하고 있는지 확인하기 위해 Log 찍기
Log.d("onClick", "리셋 버튼이 클릭되었습니다.") // 디버깅용이므로 Log.d
}
plusButton.setOnClickListener{
// + 버튼의 클릭에 대한 리스닝을 하고 있는지 확인하기 위해 Log 찍기
Log.d("onClick", "+ 버튼이 클릭되었습니다.") // 만약 에러용이면 Log.e
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/numberTextView"
android:layout_width="match_parent"
android:layout_height="300dp"
android:text="0"
android:textSize="100dp"
android:textColor="@color/blue"
android:textStyle="bold|italic"
android:gravity="center"/>
<!-- Linear Layout 는 vertical 이다.
그러나 버튼은 가로 정렬하고 싶다.
이럴 때는, 중첩 레이아웃을 사용하면 된다. -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/resetButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="초기화"
android:layout_weight="1"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:layout_marginStart="16dp"
/>
<Button
android:id="@+id/plusButton"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="+"
android:layout_weight="1"
android:layout_margin="16dp"
/>
</LinearLayout>
</LinearLayout>