今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

アプリ全体でリソースを共有するには

まず、android.app.Applicationを継承したクラスを作る。
例えば、com.satoshis.hoge.HogeApplicationとする。

package com.satoshis.hoge;

import android.app.Application;

public class HogeApplication extends Application {
}

このクラスに、共有したいリソースを持たせて、getterを用意する。
たとえば、複数の名前を管理するListとか。

package com.satoshis.hoge;
 
import android.app.Application;
import java.util.ArrayList;
import java.util.List;

public class HogeApplication extends Application {
    private List nameList;

    @Override
    public void onCreate() {
        super.onCreate();
        nameList = new ArrayList();
    }

    public List getNameList() {
        return nameList;
    }
}

どこかのActivityで使いたいとき。

    @Override
    public void onCreate() {
        HogeApplication app = (HogeApplication)getApplicationContext();
        List nameList = app.getNameList();
        // あーだこーだ
    }

2012/04/02 追記
マニフェストに書かなきゃいけないって書き忘れてた。

    <application android:icon="@drawable/hoge"
                 android:label="@string/app_name"
                 android:name="com.satoshis.hoge.HogeApplication">

                :

    </application>