リソース(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生まれ。
2019年くらいからフロントエンドエンジニアを目指している元アフィリエイターです💩

penpenをフォローする
penpenをフォローする
penpenメモ

コメント

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