【Android】Bundleの使い方

Bundleとは


AndroidにはActivityのライフサイクルがあります。

別のActivityが前面に来るなどにして、メモリが不足した場合にActivityが破棄されることがあります。

このとき、メモリ上にだけ展開されていたインスタンス変数などの値も破棄されてしまいます。

再度呼び出されるときは、もう一度Activityを生成しなおすため、前回の状態は失われています。

そこで、前回と同じ状態に復元できるようにするために、状態を保存、復元するクラスとしてAndroidが準備してくれているのがBundleです。

簡単に言うとBundleはOSの判断で強制的に停止、終了する時に一時的にデータを格納するクラスです。

Bundleの使い方


Bundleの作成

Bundle 変数 = new Bundle();

変数.putString("キー1", "値1");
変数.putString("キー2", "値2");

値を受け取る場合

String 変数 = args.getString("キー1");
String 変数 = args.getString("キー2");

Bundleの使用例

画面遷移などでも使用できるのですが、今回は同じクラス内の異なるpublic ... { }同士で値を受け渡す処理を書きます。

public clas ... extends ... {

    @Override
    public ... {
        .
        .
        .

        Bundle args = new Bundle();// Bundleの作成

        args.putString("key1", "value1");// 渡す値をセット
        args.putString("key2", "value2");// 渡す値をセット
    }

    @Override
    public ... {
        .
        .
        .

        String getValue1 = args.getString("key1");//値の受け取り
        String getValue2 = args.getString("key2");//値の受け取り
    }

}

参考サイト:

Android - Bundle - Qiita

Thinking megane: 振る舞いのよいAndroidアプリのために。BundleSaver。