R.drawable.iconが使えないときは

androidの開発をがしがしやっておりますよっと。

が、素人でかつ、参考書を丸写しをするとどうしてもつまづくところがあり、いままではそこで放置してましたが、意を決して調べました。

具体的には、R.drawable.iconという記述が昔の参考書にはでてきます。

が、現在のeclipseとandroid sdkでターゲットを2.3.3などとしていると、このR.drawable.iconが使えないぞ、そしてそもそもR.javaというのができていないぞ、という問題に直面してました。

そもそも、R.javaとは何ぞや?というところなのですが、うっすら理解したところだと、プロジェクトの中のリソース(Resource)のリストみたいな働きをしているらしい、と。

リソースを集めて速し、、、R.java


で、これは、勝手にsdkのなにかがリソースをがしがし集めてきてリストにしているらしい。

整理すると、、、

1. R.javaができない。
これはいくつか理由があるらしいのですが、xmlファイルにエラーがあるとできないらしい。それで、勝手にできるメニューのxmlを消すんですがエラーが消えず、なぜ?とおもっていると、consolに
res/raw/Emptiness.mp3: Invalid file name: must contain only [a-z0-9_.]

と表示される事にきづきました。つまり、大文字だめよ、ということらしい。
なので、リネームしてやるとまずはクリア。R.javaができました。

2. R.drawable.iconが使えない。
これは、新しいsdkでプロジェクトをつくると、そもそも、icon.pngというファイルが生成されず、ic_launcher.pngというのができる。なので、まず、iconの部分をic_launcherに書き換える必要があります。
つまり、

R.drawable.icon,

R.drawable.ic_launcher

と書き換えればOK。でも、drawableというフォルダないじゃん、てことなんですがここも、osなりが勝手に自分の画面解像度に合わせたリソースを読んだり、たりないのは他のフォルダから読み込んできたりするらしいので、R.drawable-hdpiとかにする必要がないらしいです。実際にR.javaをよむと、

public static final class drawable {
        public static final int ic_action_search=0x7f020000;
        public static final int ic_launcher=0x7f020001;
    }
などとなっております。

R.javaのなかみ。リソースが一覧になっとります。


なるほど!と膝をうったわけですが、サンプルが動いたのみで、さてさて、という昨今。

(先人に感謝!
http://techbooster.jpn.org/andriod/environment/5796/
)

コメント

このブログの人気の投稿

Python学習帳

ライトウェイトデザインアプリ続く UIのモックアップ作成!