Android
 Computer >> コンピューター >  >> プログラミング >> Android

KotlinでAndroidアクティビティを再起動する方法をわかりやすく解説

この記事では、Kotlinを使ってAndroidのアクティビティ(Activity)を再起動する方法を、サンプルコードとともに段階的に解説します。ボタンをタップするとアクティビティが再作成され、画面上のランダムな数値が更新されるシンプルなデモアプリを作成します。

アクティビティ再起動の仕組み

Androidでアクティビティを再起動する基本的な方法は、現在のIntentを取得して一度 finish() を呼び出し、その直後に同じIntentで startActivity() を実行することです。これにより、アクティビティが破棄されてから新しく作り直され、onCreate() が再度実行されます。

手順1:新しいプロジェクトを作成する

Android Studioを開き、「File」→「New Project」を選択して、必要な情報を入力して新しいプロジェクトを作成します。言語は「Kotlin」を選択してください。

手順2:レイアウトファイル(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 に以下のコードを追加します。画面表示時に0〜99のランダムな数値を生成してTextViewに表示し、ボタンがクリックされるとアクティビティを再起動します。

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)
        }
    }
}

手順4:AndroidManifest.xmlを確認する

androidManifest.xml には以下のようにMainActivityを登録します。通常、プロジェクト作成時に自動生成されているため、変更は不要です。

<?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アクティビティを再起動する方法をわかりやすく解説

デバイス選択のダイアログが表示されたら、接続中のモバイルデバイスを選択してください。アプリが起動すると、端末の画面にランダムな数値が表示されます。

KotlinでAndroidアクティビティを再起動する方法をわかりやすく解説

「Restart Activity」ボタンをタップすると、アクティビティが再起動され、ランダムな数値が新しいものに更新されることが確認できます。

KotlinでAndroidアクティビティを再起動する方法をわかりやすく解説

補足:recreate()メソッドを使う方法

APIレベル11以降では、より簡潔にアクティビティを再作成できる recreate() メソッドも利用できます。ボタンのクリック処理を以下のように書き換えるだけで、同じようにアクティビティを再起動できます。

button.setOnClickListener {
    recreate()
}

recreate() は現在のインスタンス状態(savedInstanceState)を保持したまま再構築を行うため、多くの場面でこちらの方法が推奨されます。用途に応じて使い分けてください。

  1. 【Android】アクティビティを再起動する方法をサンプルコード付きで解説

    はじめに このチュートリアルでは、Androidアプリでアクティビティ(Activity)を再起動する方法を解説します。アクティビティの再起動は、finish()で現在のアクティビティを終了し、startActivity()で同じインテントを使って再度起動するという手法で実現できます。 ここでは、ボタンをタップするとランダムな数値が表示し直されるサンプルアプリを作成しながら、具体的な手順を紹介します。 ステップ1:新規プロジェクトの作成 Android Studioを開き、「File」→「New Project」を選択して、必要な情報をすべて入力し、新しいプロジェクトを作成します。 ステッ

  2. KotlinでAndroidエミュレータのIPアドレスを取得する方法【初心者向け】

    はじめに Kotlinを使えば、Wi-Fi接続情報から簡単にAndroidエミュレータや実機デバイスのIPアドレスを取得できます。この記事では、ボタンをタップすると現在のIPアドレスが画面に表示されるシンプルなサンプルアプリを作成しながら、具体的な手順をわかりやすく解説します。 仕組みとしては、WifiManagerから接続中のネットワーク情報を取得し、Formatter.formatIpAddress()メソッドで整数値として保持されているIPアドレスを「192.168.x.x」のような読みやすい文字列に変換する流れになります。 ステップ1:新規プロジェクトの作成 まずはAndroid St