2012年6月7日木曜日

EclipseのLayout Editor でエラーが吐かれる。

想い出がいっぱい
突然に Eclipse の Layout Editor がエラーとなる現象に遭遇。
(layout配下の ***.xml を開こうとするとエラーとなる。)

初回は開けるが、二回目に開こうとすると
org.eclipse.swt.SWTException: Graphic is disposed」 が発生。


Eclipse を再起動すると、やはり初回だけ開ける。
しかし、他のプロジェクトのxmlを試してみると、何度も開ける。


あれれ・・・自分のプロジェクトだけ・・・!?


色々、調べてみると
 「ADTのバグだ。Verupすれ」
 「Eclipseのバグだ。Verupすれ」
などの情報があったため、その通りにするも現象は変わらず。
最新の Eclipse を入れてみたり、32bit版も試してみたりしても現象は変わらず。




メモリか、メモリが足りないのだな!?

っと、マシンのメモリは十分あるはずなので、Eclipse.iniで メモリ割り当てを増加させるも、現象は変わらず。


------------------------------------------------------

最終的に原因は・・・・カスタムビューのコンストラクタ。
どうやら カスタムビューを Layout Editor で扱う場合は、コンストラクタ内の処理を抑止しなくては駄目な模様。
具体的には isInEditMode() を使い、編集モード時は処理を抑止し、実行時にはちゃんと実行されるように。
(参考:http://tools.android.com/recent/customviewsinthepalette


最初からLayout Editor でも注意されていたのですが、エラーが吐かれて、編集できなくなるまで至らなかったので無視していたのですが、まさかこんな罠があるとは・・・。

3-4時間ほど悩みました。



------------------------------------------------------
2012/06/07 19:30 追記

またまた発生した。
石の上にも3年
org.eclipse.ui が 「Unhandled event loop exception」 を連発。

カスタムビューのコンストラクタだけが原因ではなかった模様。


原因は Layout Editor の左にあるウィジェットのパレットが原因の模様。

ウィジェットの表示を 「Show Only Icons」 にしていると、問題の現象が発生。

それ以外だと、大丈夫な模様。

回避策は見つけたが、根本的な解決には至らず。

ひとまず騙し騙し・・・。


0 件のコメント:

コメントを投稿