かなり昔作ったアプリがあるので、ちょっと書き直していた。
AbsoluteLayoutを使っていたので、別のに置き換えようかとね。
Viewを指定した位置に配置する方法がどこかのサイトにあったので、置き換えは成功した。
(サイトがどこだったか、忘れてしまった。。。)
それが先週の話。
今週もちょっといじろうと思って動かしたのだが、起動しただけでエラーになって立ち上がらない。
onCreate()のsetContentView(R.layout.main)を実行した中で例外が出るのだ。
Inflatingなんとか、という例外のようだ。
Binary XMLがうんたらかんたら、とも出てきた。
このアプリは、LinearLayoutをextendsして、自前のLayoutを作っている。
ImageViewもextendsして、自前のViewにしている。
特徴はそれくらいだ。
はて、先週までは動いていたのに。。。
しかしよく考えると、最後にちょっと変更だけしていたようなのだ。
検索すると、レイアウトのxmlに書いた名前を書き間違えてるとか、そのclassがpublicになってないとか、そういうのが出てきた。
でも、今回はそういうことはない。
さっぱりわからないので、extendsしたLayoutクラスのコンストラクタが呼ばれるのかをブレークポイントで見てみた。
呼ばれている。
呼ばれているが、実行しようとすると例外が出る。
あ、メンバ変数(フィールドっていうのかな)に代入する際、nullオブジェクトのメンバ関数(メソッド、なのかな)を呼び出してる。。。
つまり、Layoutを作ろうとしてコンストラクタを呼び出したんだけど、nullオブジェクトのメソッド呼び出しによって例外が発生し、そのせいでレイアウトが作れなかったのでInflatingなんとか例外が出た、と。
ってことは、例外時のスタックトレースを全部見ていたら原因がわかったのかな。。。
なんだかよくわからない例外の時は、トレースの先頭だけしか見ていなかったけど、もうちょっと先まで見るようにせねば。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。