タイトルのようにリソース(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クラスで
- mContextという静的変数を作成
- 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形式で読み込む方法を教えて下さい。 – スタック・オーバーフロー
コメント