Blog9 of GrrrNeko BASE

このコーナーではデベロッパー向けに、私がハマってしまったポイントとその解決法を書いていきます。

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 での編集は避けて、見た目だけプレビュー的に確認するに留めた方がよさそうだ。

ページトップへ