先日Androidアプリの開発中に、R cannot be resolved to a variableというエラーメッセージが出た。
Androidアプリを開発していると稀に原因不明のエラーが出ることがある。
その場合はProject→cleanを実行して、再度ビルドし直せば大抵の場合は解消するが、
今回のR cannot be resolved to a variableエラーについては何度試しても解消せずに
少しの間ハマってしまった。
原因について色々と検索して調べたところ、どうやらgen配下にR.javaが無くなってしまっている。
R.javaはXMLで宣言したリソースのIDを管理しているクラスである。
自動ビルドをオンにしていると、R.javaは自動で作成されるのだが、これが作成されないと
いうことはどこかXMLの宣言周りがおかしいのかなと思って調べてみた。
だが、結果はどこにも誤りはなかった。
さらに調べていくと、ここのブログで.orgなどと付けたファイルを置いていると、元ファイルと
同じと見倣されて正常に読み込めないとの記載があった。
もしかしてと思い再度自分のプログラムを見直したところ、_bkと付けて残していたxmlファイルが
あったので、これを削除してから再ビルドすると今度はエラーが解消した。
_bkなどと付けてバックアップしているのに、勝手に同じファイルと判断されてエラーになるのは、
なんか不親切な仕様な気がする。しかも今まで_bkファイルを置いてても正常に動いてたのに、
急にエラーが出始めたから、原因の特定に時間がかかってしまう結果となった。
次回からは変なエラーでハマって時間を取られないように気をつけたいところです。
プログラミングAndroid/オライリージャパン
¥3,570
Amazon.co.jp