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