Android Kotlin : Activity 화면 전환 하기
MainActivity의 버튼을 터치하여 SubActivity로 화면을 전환
하는 간단한 앱을 만드는 방법을 소개합니다.
개발환경 및 버전 정보
이 포스트는 Android Studio와 Kotlin언어를 사용합니다.
버전정보
- Android Studio 4.1.2
- Kotlin Version 1.4.31
용어 간단 정리
Activity 화면 전환 관련된 용어 정리입니다.
- Activity : 앱의 단일 화면을 나타냄
- Intent
- 안드로이드 기본 구성 요소(컴포넌트) 간의 통신을 위해 사용되는 메세지 객체
- 대표적인 사용 예 : 액티비티 시작, 서비스 시작, 브로드캐스트 전달
프로젝트 생성 및 환경 설정
프로젝트 생성
안드로이드에서 새로운 프로젝트를 생성합니다.
- 템플릿 : Empty Activity
- 프로젝트명 : ActivityTest
build.gradle(Module) 설정
App > Gradle.Scripts > build.Gradle(Module) 파일의 plugins에 id 'kotlin-android-extensions'를 추가합니다. 플러그인을 추가하고 Sync Now를 선택합니다.
※ kotlin-android-extensions 는 레이아웃 View의 id를 코틀린 코드에서 바로 사용 할 수 있도록 해주는 플러그인입니다. 해당 플러그인은 2021년 지원이 종료 될 예정입니다. 참고해주세요. kotlin-android-extensions 를 대체하는 View Binding 방법은 아래의 링크를 참조해주세요.
UI만들기
activity_main.xml 레이아웃 만들기
app > res > layout > 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">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Main Activity"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btnGoSubActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go to SubActivity"
android:layout_marginBottom="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
위 레이아웃에서 Go To SubActivity 버튼을 누르면 Sub Activity로 화면을 전환할 예정입니다.
Sub Activity 생성
app > java 폴더에서 마우스 우클릭후 Empty Activity 추가합니다. 추가할 액티비티의 이름은 SubActivity로 지정합니다.
SubActivity 가 생성되면 코드가 있는 폴더에 SubActivity.kt, 레이아웃이 있는 폴더에 activity_sub.xml 이 추가된 것을 확인 할 수 있습니다.
activity_sub.xml 레이아웃 만들기
app > res > layout > activity_sub.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=".SubActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sub Activity"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btnClose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go Back"
android:layout_marginBottom="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
코드작성
시나리오
activity_main.xml 과 activity_sub.xml 화면은 아래 그림과 같습니다. MainActivity의 버튼을 누르면 SubActivity로 화면이 전환되고, SubActivity 의 버튼을 누르면 SubActivity를 종료하고 MainActivity로 돌아가는 앱입니다.
MainActivity.kt
MainActivity에서 버튼을 누르면 SubActivity를 호출하는 코드 입니다.
package com.blacklog.activitytest
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btnGoSubActivity.setOnClickListener {
val intent = Intent(this, SubActivity::class.java)
startActivity(intent)
}
}
}
SubActivity.kt
SubActivity에서 버튼을 누르면 SubActivity를 종료하고 이전 화면으로 돌아가는 코드입니다.
package com.blacklog.activitytest
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_sub.*
class SubActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sub)
btnClose.setOnClickListener {
finish()
}
}
}
실행 결과
코드 작성 완료 후 Android Studio 상단 툴바에서 앱 실행 버튼을 클릭하면 아래와 같이 애뮬레이터에서 앱이 실행되는 것을 확인 할 수 있습니다.
※ 애뮬레이터 설정 방법은 아래의 링크를 참조해주세요.
요약 : Activity 화면 전환
- 전환하고자 하는 Activity를 포함하는 Intent 인스턴스 생성
startActivity()함수에 생성된 intent 인스턴스를 인자로 포함하여 안드로이드에 호출함
'Programming > Android App(Kotlin)' 카테고리의 다른 글
안드로이드 코틀린 : 권한 개요 및 일반 권한 사용하기 - WebView (0) | 2021.03.15 |
---|---|
안드로이드 View Binding 사용하기 - kotlin-android-extensions 지원 중단 (0) | 2021.03.12 |
안드로이드 코틀린 : 전환된 Activity 종료 결과 수신하기, startActivityForResult() 와 onActivityResult() (1) | 2021.03.11 |
안드로이드 코틀린 : Activity 전환 할 때 데이터 넘기기 (0) | 2021.03.10 |
안드로이드 코틀린 앱 개발 시작하기 Hello World (0) | 2021.03.08 |