リソース(string.xmlなど)をプロジェクトのどこからでも参照できるようにする

タイトルのようにリソース(string.xmlなど)をプロジェクトのどこからでも参照できるようにするために

以下のような「GetApplication」クラスを作って

public class GetApplication extends Application {
    private static GetApplication instance;

    public static synchronized GetApplication getInstance() {
        return instance;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
    }
}

AndroidManifest.xmlファイルの<application>タグの中に「android:name=”.GetApplication”」と書く。

<application
    android:name=".GetApplication"
・
・
・

そしてリソースを取得するときは

String st = GetApplication.getInstance().getApplicationContext().getString(R.string.member_intro1)

みたいに書く。

これでプロジェクト内ならどこからでもリソースが取得できるようになる(ちなみに検索してもこの方法ばかりヒットした)。

 

ただ、1人で開発するような個人アプリの場合は、以下のようにMainActivityクラスで

  1. mContextという静的変数を作成
  2. onCreateでmContextにコンテキストを保存

という風にして

public class MainActivity extends AppCompatActivity {
    private static Context mContext;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext=this;
    }

   public static Context getContext(){ 
    return mContext;
   }
}

リソースを取得したいときは

String st = MainActivity.getContext().getString(R.string.test)

みたいな感じにしてもいいんじゃないかなーと思ったり・・。

 

 

参考にしたサイトやブログ:

android – strings.xmlのデータをActivityを継承していないクラスにString形式で読み込む方法を教えて下さい。 – スタック・オーバーフロー

Android
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。WEBエンジニア。

技術スタック:TypeScript/Next.js/Express/Docker/AWS

フォローする
フォローする

コメント

タイトルとURLをコピーしました