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

Androidでグローバル変数を宣言する方法【シングルトンパターンで実装】

Androidにおけるグローバル変数の宣言方法

本記事では、Androidアプリ全体で共有できるグローバル変数を宣言する方法を、実際のサンプルコードとともにわかりやすく解説します。AndroidにはJavaなどの言語にあるような厳密な意味での「グローバル変数」は存在しませんが、シングルトンパターンを利用することで、アプリ内のどこからでもアクセスできる変数を実現できます。

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

Android Studioを起動し、「File」⇒「New Project」を選択して、必要事項を入力して新しいプロジェクトを作成します。

手順2:レイアウトファイル(activity_main.xml)を編集する

res/layout/activity_main.xml に以下のコードを追加します。

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
    xmlns:app = "https://schemas.android.com/apk/res-auto"
    xmlns:tools = "https://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:gravity = "center"
    android:layout_height = "match_parent"
    tools:context = ".MainActivity"
    android:orientation = "vertical">
    <TextView
        android:id = "@+id/actionEvent"
        android:textSize = "40sp"
        android:layout_marginTop = "30dp"
        android:layout_width = "wrap_content"
        android:layout_height = "match_parent" />
</LinearLayout>

このレイアウトでは、グローバル変数の値を画面に表示するためのTextViewを配置しています。

手順3:MainActivity.java にコードを追加する

src/MainActivity.java に以下のコードを記述します。

package com.example.myapplication;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    TextView actionEvent;
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        actionEvent = findViewById(R.id.actionEvent);
        actionEvent.setText("Click");
        actionEvent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                singleToneClass singleToneClass = com.example.myapplication.singleToneClass.getInstance();
                singleToneClass.setData("Tutorialspoint.com");
                actionEvent.setText(singleToneClass.getData());
            }
        });
    }
}

このコードでは、TextViewをタップするとシングルトンクラスからインスタンスを取得し、データを保存したうえで、その値をTextViewに表示しています。

手順4:シングルトンクラス(singleToneClass.java)を作成する

src/singleToneClass.java を新規作成し、以下のコードを追加します。

package com.example.myapplication;
public class singleToneClass {
    String s;
    private static final singleToneClass ourInstance = new singleToneClass();
    public static singleToneClass getInstance() {
        return ourInstance;
    }
    private singleToneClass() {
    }
    public void setData(String s) {
        this.s = s;
    }
    public String getData() {
        return s;
    }
}

このクラスはシングルトンパターンで実装されています。コンストラクタがprivateになっているため、アプリ内で唯一のインスタンス(ourInstance)だけが生成され、すべてのアクティビティから同じインスタンスが共有されます。これにより、どの画面からでも同じデータにアクセスでき、実質的にグローバル変数として機能します。

補足:Applicationクラスを使う代替手段

シングルトンパターン以外にも、独自のApplicationクラスを作成してフィールドを持たせる方法があります。その場合は、AndroidManifest.xml の <application> タグに android:name 属性で登録すれば、getApplicationContext() 経由でアプリ全体から値にアクセスできます。

アプリの実行と動作確認

それではアプリを実行してみましょう。実機のAndroidスマートフォンをパソコンに接続しているものとして説明を進めます。Android Studioでプロジェクトのアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。デバイスの選択ダイアログで接続したモバイル端末を選ぶと、端末に以下のような初期画面が表示されます。

Androidでグローバル変数を宣言する方法【シングルトンパターンで実装】

続いて、TextViewをタップしてください。以下のように、シングルトンに保存された値が画面に表示されます。

Androidでグローバル変数を宣言する方法【シングルトンパターンで実装】

  1. Android Studioで静的変数(static)を使う方法と適切な活用場面を解説

    静的変数(static変数)は、クラスのインスタンスを生成しなくてもアクセスできる特殊な変数です。すべてのインスタンス間で値が共有され、プログラムの実行中に一度だけメモリへ割り当てられます。Androidアプリ開発では、ログ出力用のタグ定数やアプリ全体で共通する設定値の管理など、さまざまな場面で活用されています。この記事では、Android Studioで静的変数を宣言し、実際に使用するまでの手順をサンプルコードとともに分かりやすく解説します。静的変数とは?静的変数はクラスそのものに属し、ClassName.variableName の形式でどこからでもアクセスできます。特に static f

  2. Androidでグローバル変数を宣言する方法!シングルトンクラスを使った実装手順を徹底解説

    このチュートリアルでは、Androidアプリでグローバル変数のように使えるデータを宣言し、アプリ全体で共有する方法を解説します。具体的にはシングルトンクラスを作成し、どの画面からでも同じデータを保存・取得できるようにしていきます。 Androidでグローバル変数が必要になるケース Androidでは各Activityが独立したライフサイクルを持つため、通常のプログラミング言語のように単純にグローバル変数を宣言することは推奨されません。そこで定番となるのが、インスタンスがアプリ内に1つだけしか存在しないことを保証する「シングルトンパターン」です。これにより、画面をまたいで安全にデータを共有できま