2010年12月30日木曜日

Resource is not public

システムが持つリソース・ファイル (各種 XML ファイルや PNG ファイルなど) は参照できるものと参照できないものがあるようです。

参照できない場合、Eclipse のコンソールに以下のようなエラーが出力されます。

[2010-12-30 11:15:19 - XXXXXXX Proj] C:\android\workspace\XXXXXXX Proj\res\values\styles.xml:77: error: Error: Resource is not public. (at 'android:background' with value '@android:drawable/btn_circle').

@android:drawable/btn_circle を指定して、
<android SDK導入ディレクトリ>\platforms\android-X\data\res\drawable\btn_circle.xml (android-X の X は API レベル) を参照しようとしているのですが、"public じゃないよ" と叱られています。

public かどうかは、その名の通り public.xml で確認できます。
(android 2.2 の場合)
<android SDK導入ディレクトリ>\platforms\android-8\data\res\values\public.xml

ちなみに、public でなくとも、@*android:drawable/btn_circle のように、@ の後ろに * (アスタリスク) を入れると参照できるようになります。

但し、以下のメーリング・リストのやりとりを見ると、public でないものは、頻繁に変更が入るみたいなので、基本的には使用しないほうが無難なようです。
what star (*) means in "@*android:drawable/"?
https://groups.google.com/group/android-developers/browse_thread/thread/d1e06ce82e1f745b?fwc=1&hl=ja