Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

Kotlin으로 Android 액티비티(Activity)를 다시 시작하는 방법

이 글에서는 Kotlin을 사용하여 Android 액티비티(Activity)를 다시 시작(재시작)하는 방법을 단계별로 살펴봅니다. 버튼을 클릭하면 현재 액티비티가 종료된 후 새로 시작되면서 화면의 랜덤 숫자가 변경되는 간단한 예제입니다.

1단계: 새 프로젝트 생성

Android Studio에서 File → New Project로 이동한 뒤, 필요한 모든 정보를 입력하여 새 프로젝트를 생성합니다.

2단계: 레이아웃 파일 작성 (res/layout/activity_main.xml)

아래 코드를 res/layout/activity_main.xml에 추가합니다. 화면 상단에는 타이틀 텍스트, 중앙에는 랜덤 숫자를 표시할 TextView, 그 아래에는 액티비티를 재시작할 Button이 배치됩니다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://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:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="Tutorials Point"
        android:textAlignment="center"
        android:textColor="@android:color/holo_green_dark"
        android:textSize="32sp"
        android:textStyle="bold" />
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textColor="@android:color/background_dark"
        android:textSize="24sp"
        android:textStyle="bold" />
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/textView"
        android:layout_centerInParent="true"
        android:layout_marginTop="16sp"
        android:text="Restart Activity"
        android:textColor="@android:color/background_dark" />
</RelativeLayout>

3단계: MainActivity.kt 작성

아래 코드를 src/MainActivity.kt에 추가합니다. 핵심 로직은 버튼 클릭 시 현재 인텐트(intent)를 가져온 후 finish()로 액티비티를 종료하고, 같은 인텐트로 startActivity()를 호출하여 액티비티를 새로 시작하는 것입니다.

import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import java.util.*
class MainActivity : AppCompatActivity() {
    lateinit var textView: TextView
    lateinit var button: Button
    var random: Random = Random()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        textView = findViewById(R.id.textView)
        button = findViewById(R.id.button)
        textView.text = "Random Number: " + random.nextInt(100)
        button.setOnClickListener {
            val intent = intent
            finish()
            startActivity(intent)
        }
    }
}

이 방식 외에도 Kotlin에서는 recreate() 메서드를 호출하는 더 간단한 재시작 방법도 있으니, 상황에 따라 함께 활용해 보세요.

4단계: AndroidManifest.xml 확인

아래 코드를 androidManifest.xml에 추가합니다. MainActivity가 런처(LAUNCHER) 액티비티로 등록되어 있는지 확인하세요.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.q11">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

앱 실행 및 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 Android 기기를 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바의 Run 아이콘을 클릭하세요.

Kotlin으로 Android 액티비티(Activity)를 다시 시작하는 방법

실행 옵션에서 자신의 모바일 기기를 선택하면, 연결된 기본 화면이 표시됩니다.

Kotlin으로 Android 액티비티(Activity)를 다시 시작하는 방법

Kotlin으로 Android 액티비티(Activity)를 다시 시작하는 방법

버튼을 클릭할 때마다 액티비티가 종료 후 다시 시작되며, 화면 중앙의 랜덤 숫자가 새로 생성되는 것을 확인할 수 있습니다.