2012-9-27
android / eclipse: レイアウトをいじったら動かなくなった
症状:
正常に動作したプロジェクトで、xml ファイルを eclipse の Graphical Layout で位置を調整したりした後、再び実行すると「予期しないエラーが発生」!
解決法:
xml コードを直接編集しているときには、順番通りに以下のように編集している。
- ボタン1
- テキストビュー1
- ボタン2
- テキストビュー2
- ボタン3
- テキストビュー3
これを Graphical Layout タブ上で、ビジュアルで編集しなおす。例えば、上の例であれば、テキストビュー1、テキストビュー2、テキストビュー3をそれぞれ少しずつ右にずらしてみたりする。
この状態で実行すると、 「予期しないエラーが発生」となり、LogCat を見ると、android.widget.TextView cannot be cast to android.widget.Button という FATAL エラーが発生している。
LogCat を見ていくと、java ファイルの方で、2個目のボタンの findViewById の行でエラーが発生していることになっているが、1個目、3個目となんら変わったところはない。
すなわち、「ハヒ~?おれさまどこがまちがってるんだ~?」(ばいきんまん風に)という状態になる。
結論としてはビジュアルで xml ファイルを編集したときに、コードが勝手に
- ボタン1
- ボタン2
- ボタン3
- テキストビュー1
- テキストビュー2
- テキストビュー3
と並び変えられてしまった。
ということで、コードをコピペして元通りの順番に直すと問題なく動く。
eclipse は現在最新の JUNO であって、Graphical Layout は UI 的に重宝するが、やはりコードは直接打って、Graphical Layout での編集は避けて、見た目だけプレビュー的に確認するに留めた方がよさそうだ。