Android のレイアウト XML を Eclipse の Graphic Layout で表示できない

Android の UI を設計するとき、Eclipse でレイアウト用の XML を作成して、Graphic Layout で確認することが多い。開発を進めていくと、XML ファイルだけでは解決できないことが増えてきて、結局 Java のコード内でレイアウトを行う羽目になることもしばしばだが、エミュレーターを起動したり、実機にインストールしなくても、UI を確認できるので重宝する(エミュレーターが遅すぎるから・・・)。

レイアウトの XML だけをいじってるときは、何ともないのに、ビューの文字列などを Java のコードから設定したりし始めると、Graphic Layout に切り替えたとたん、java.lang.NullPointerException が発生することがある。Graphic Layout で表示を行う際に、関連する View のコードを動作させるためだ。
エミュレーターや実機でも NullPointerException が発生する場合は、単なるバグだ。だが、エミュレーターや実機では動作するが、Graphic Layout だけ表示できない場合がある。自分の場合は、View の中で Preference の値を取得して表示する文字列を設定していたのだが、Preference が取得できなくて、NullPointerException になった。こんな悲しげなメッセージが表示される。

java.lang.NullPointerException
Exception details are logged in Window > Show View > Error Log

java.lang.NullPointerException
...

Graphic Layout の表示時に取得できないオブジェクトを利用しているのであれば、オブジェクトを利用する前に return すればよいようだ。幸いなことに、View には、isInEditMode() というメソッドが用意されており、Graphic Layout 表示時に行いたくない処理の前で、View を継承したクラスの中であれば、

if (isInEditMode()) {
	return;
}

と書いておけば、NullPointerException を回避できる。

すぐ忘れて頭を悩ませてしまうので、備忘録として書いておきます。コードの中に、埋め込むのはあまり気が進まないけれど・・・


Android のレイアウト XML を Eclipse の Graphic Layout で表示できない」への1件のフィードバック

  1. ピンバック: Androidエラーの傾向と対策 | android manifest configChanges

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.