非Activityクラスからの文字列リソースアクセス方法について

閲覧: 5,948 回
最初の未読メッセージにスキップ

Volics4

未読、
2010/01/27 18:02:492010/01/27
To: Android-SDK-Japan
Volics4と申します。

res/values/strings.xmlに文字列リソースを追加し、
その文字列を基底クラスを持たないクラスから
アクセスする方法はないのでしょうか?

当然、Contextクラス(=Activity)の派生クラスでは、
getString(int resId) を使用すればよいのですが、
基底クラスを持たないクラスで
Contextのインスタンスの取得方法がわかりません。

Context#createPackageContext()でpackageNameを指定して
Contextのインスタンスを取得する方法もできないし、
Resources#getSystem()で取得したインスタンスでは、
システムリソース(no application resources)しかアクセスできません。

結局、Activityクラス内でgetResources()で取得した
[application resources]のインスタンスを、基底クラスを
持たないクラスに渡し、getString()する事にしました。

こんな実装で正しいのでしょうか?

Daisuke Miyakawa

未読、
2010/01/27 18:28:162010/01/27
To: android-...@googlegroups.com
みやかわです。

私の理解が正しければVolics4さんの方法が適切な方法です。
Context オブジェクト やその派生クラスのオブジェクトは、基本的にはシステムが作って渡してくれるもので、自分で作るものではないです。
そのアプリケーション等が終了した時のリソース開放などもシステムがやることになるわけです。
(例外はユニットテストを作るときなどです)
なので、Contextオブジェクトそのものか、getResources() の返り値を他のオブジェクトに渡して回るのが適切かと思います。

どなたか、もし間違っていたらコメントをお願いします。

それでは。

2010年1月28日8:02 Volics4 <vol...@gmail.com>:

--
このメールは Google グループのグループ「Android-SDK-Japan」の登録者に送られています。
このグループに投稿するには、android-...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-sdk-ja...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-sdk-japan?hl=ja からこのグループにアクセスしてください。




--
Daisuke Miyakawa (宮川大輔)
d.miy...@gmail.com

Hiro Taki

未読、
2010/01/28 10:19:412010/01/28
To: android-...@googlegroups.com
Volics4です。
 
みやかわ様、返信頂きまして、ありがとうございます。
賛同の意見を頂き、心強く思っています。
getResources()の戻り値を渡す方法で進めたいと思います。
 
2010年1月28日8:28 Daisuke Miyakawa <d.miy...@gmail.com>:
全員に返信
投稿者に返信
転送
新着メール 0 件