前回はビルド・パスの構成にてライブラリを追加しましたが、この方法だとLibrary内のリソースが参照できない;;
<libraryPackageName>.R.xxxとかでLibrary側のR.javaのリソースIDは参照できるようだが、そのIDを使ってgetString()とかやってもLibrary側のリソースは取得できない。
さらにLibraryの内部でリソースにアクセスする場合にもcontextが必要で、contextはプロジェクトのMain側で取得するため、プロジェクトのMain側のリソースにアクセスすることはできるが、Library側のリソースにはアクセスできません。
どうやら、リソースを参照するにはライブラリのソースパスごとプロジェクトに含めてやる必要がありそうです。
(どうにかなんないのかな??リソースを使うLibraryはJARで配布できないんだろうか?)
具体的には、
- プロジェクトのプロパティを開く→Androidのタブ 追加を選んで、Libraryのプロジェクトを選択します。
- あとはOKを押すだけで完了。ソースパス毎追加するとパッケージ・エクスプローラはこんな感じになります。
- これで、Library側のR.javaも参照できて、そのIDでリソースが参照できるようになります。 ただし、プロジェクト Main側のリソース名とLibrary側のリソース名が区別されない(どちらもR.string.xxxとかで参照することになる)ので、名前の付け方には注意する必要がありそうです。
※Libraryのプロジェクトは事前に作成するか、既存のプロジェクトをImportするかしておきます。
genの中にLibraryのR.javaが追加されています。
0 件のコメント:
コメントを投稿