Action Mode の呪いが解けました
Action Mode の呪いはいまだ解けていなかった。エミュレータでも実機でも解けていなかった。
そうしてようやくたどりついたところでようやく解呪のヒントが見つかった。GridView を設定しているレイアウトファイルを見ると、確かに呪いの刻印が見つかった。
それは、
android:choiceMode="multipleChoiceModal"
のようなもの。これを削除したところ呪いは解けた。
ただ、自分でいれた記憶は実際なく、おそらくは ADT が自動で補完したものではないかと。当初コンテキストメニューで実装したのだけれど、「Action Mode というのも便利そうだなあ」などと思って変更してみた。このときに必要だったのはアクティビティ側のコードだけだった。レシピ本にも特にレイアウトファイルへ追加するような記載はないので、自分で追加したとは思えない。おそらくは ADT の仕業。
いろいろしたもののやはり Action Mode はやめようということでみずから書いたコードはすべて削除したのだが、レイアウトファイルに追加されてしまった分は残ったまま。それだけでエラーになるものではないので、なにも言わない。
そうしていざ実行するとレイアウトファイルの記述から、「Action Mode で使うってことだな」ということで必死に当該メソッドを探すが見つからないのでエラーになる。という状況だったらしい。
なんという罠。
というわけで、一度 Action Mode を使うコードを書いたがその後削除、以降使っていないはずの Action Mode のメソッドがないとかいってエラーになる場合には、当該のレイアウトファイルを疑うべきということで。もちろん、ADT 使わずに書いているのであれば、こういうことはないかもしれないし、またあったとしても本当に自分のミスでしかないのだけれど、自動補完でやられた日には気づきようもないと思うのだった。
追記:
実のところエミュレータでも Nexus5 タイプで実行すると問題がないので不思議だった。Nexus7 タイプでしかエラーにならない。さらに実機は 10 型タブレットだ。
タブレットサイズと携帯電話サイズとでレイアウトをわけていたために、タブレットサイズのレイアウトファイルにだけ自動補完がされたようだった。そのため Nexus5 タイプのエミュレータではエラーがでなかった。
今になって思えばそこでなにか気づくヒントがあったのかもしれないけれど、やはりそうそう簡単にはいかないのではないかとも。Android の呪いのようにも思う。怖い。
| 固定リンク
コメント