新規記事の投稿を行うことで、非表示にすることが可能です。
2015年08月16日
RelativeLayoutのディテールにLisvViewを指定して、layout_heightにwrap_contentを指定した場合、getViewが指定したListの明細数より多く呼ばれる。
これは嵌りました。
最初は実害がないと思ったので放置していた事もあったのですが、レスポンスが悪いので改善しようとしたところ、原因がわからず、結局3日位かけたのではないかと思います。
では、現象と原因と対策を
【現象】
ListViewに表示した最初の明細のみ、CheckBox、RadioButton、Buttonが効かない。
正確に書くと、Viewの位置がずれているような感じ。
CheckBoxをタッチしても、リスナーが実行されず、隣のTextViewをタッチすると、CheckBoxとTextViewのリスナーが同時に実行されるみたいな動きだった。
この現象は、先頭のViewでしかおこらず、スクロールした場合、現象のおこった明細を再利用した明細が同じようになった。
【環境】
Android 最小8 ターゲット18
Adapterはカスタムしていた。
レイアウトはRelativeLayoutでディテールにListViewを指定している。
ディティールはLinearLayoutでorientationはvertical
【原因】
Activityから渡したArrayListの明細数以上にgetViewが呼ばれている。
こんな感じ。
getView:265]0 <- この数字がポジション。
08-16 09:09:26.132: I/LogUtil(3743): [SDListAdapter#getView:265]0
08-16 09:09:26.136: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]0
08-16 09:09:26.136: I/LogUtil(3743): [SDListAdapter#getView:265]1
08-16 09:09:26.136: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]1
08-16 09:09:26.140: I/LogUtil(3743): [SDListAdapter#getView:265]2
08-16 09:09:26.140: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]2
08-16 09:09:26.140: I/LogUtil(3743): [SDListAdapter#getView:265]3
08-16 09:09:26.140: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]3
08-16 09:09:26.140: I/LogUtil(3743): [SDListAdapter#getView:265]4
08-16 09:09:26.144: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]4
08-16 09:09:26.144: I/LogUtil(3743): [SDListAdapter#getView:265]5
08-16 09:09:26.144: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]5
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getView:265]0
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]0
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getView:265]1
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]1
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getView:265]2
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]2
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getView:265]3
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]3
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getView:265]4
08-16 09:09:26.152: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]4
08-16 09:09:26.152: I/LogUtil(3743): [SDListAdapter#getView:265]5
08-16 09:09:26.152: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]5
08-16 09:09:26.152: I/LogUtil(3743): [SDListAdapter#getView:265]0
08-16 09:09:26.152: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]0
08-16 09:09:26.164: I/LogUtil(3743): [SDListAdapter#getView:265]1
08-16 09:09:26.168: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]1
08-16 09:09:26.168: I/LogUtil(3743): [SDListAdapter#getView:265]2
08-16 09:09:26.172: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]2
08-16 09:09:26.172: I/LogUtil(3743): [SDListAdapter#getView:265]3
08-16 09:09:26.172: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]3
08-16 09:09:26.176: I/LogUtil(3743): [SDListAdapter#getView:265]4
08-16 09:09:26.176: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]4
08-16 09:09:26.180: I/LogUtil(3743): [SDListAdapter#getView:265]5
08-16 09:09:26.180: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]5
それだけなら、実害はないかと思ったんだけど、AdapterのgetViewでconvertViewがnullでない場合、Viewを使い回すが、最初の呼び出しにもかかわらず、同一ポジションが複数回呼ばれた場合、Viewを使い回すになり、その時の最初の明細のみ、この現象がおこっているとわかった。(なぜ現象が発生するかまではわからなかった)
なので、使い回しをせずに、毎回inflateするとその現象は起きない。
ただ、それだとレスポンスが悪化するので、複数回呼ばれる原因を確認したところ、AbsListViewで高さのサイズ計算が関係しているみたいだったので、ListViewのレイアウトを確認すると、layout_heightがwrap_contentだった。
この現象がRelativeLayoutのみで発生するのか、LinearLayoutでも発生
のか、までは確認していない。
【対策】
まず、layout_heightをmatch_parentに変えたところ、getViewが複数回呼ばれなくなった。
また、layout_height=“0dp”にして、layout_weight=“1”でも複数回呼ばれない事を確認した。
いや、これはほんとに時間かかりました。最初にボタンが効かなくなる現象を確認したのは今年の2月位で、この時は毎回inflateする事で逃げたのですが、結構多いデータを実機で試したところ、かなり遅かったので、本腰入れて調べ始めて、3日位かかったかと思います。Adapterだけではなく、ListViewもカスタムしていた為、どの機能で発生しているを見つけるまでが大変でした。
getViewが複数回呼び出されている現象がわかってからも、なぜ呼び出されるかの原因は見つける事ができず、幸い、メニューだけはなぜか複数回呼ばれていないので、その機能と発生する機能との違いを順番にソースを書き換えて動作確認し、レイアウトを変更すると発生する事がわかり、それで初めてListViewのlayout_heightが違う事に気づきました。
見た目は正常に動作していて、かつ同一ロジックの明細で一部だけにバグが出ると、見つけるのは、ほんとに時間かかります。
最後に、
また客先常駐の仕事が入り、今回は半年以上続きそうなので、ゆっくりアプリを作り続けます。
最初は実害がないと思ったので放置していた事もあったのですが、レスポンスが悪いので改善しようとしたところ、原因がわからず、結局3日位かけたのではないかと思います。
では、現象と原因と対策を
【現象】
ListViewに表示した最初の明細のみ、CheckBox、RadioButton、Buttonが効かない。
正確に書くと、Viewの位置がずれているような感じ。
CheckBoxをタッチしても、リスナーが実行されず、隣のTextViewをタッチすると、CheckBoxとTextViewのリスナーが同時に実行されるみたいな動きだった。
この現象は、先頭のViewでしかおこらず、スクロールした場合、現象のおこった明細を再利用した明細が同じようになった。
【環境】
Android 最小8 ターゲット18
Adapterはカスタムしていた。
レイアウトはRelativeLayoutでディテールにListViewを指定している。
ディティールはLinearLayoutでorientationはvertical
【原因】
Activityから渡したArrayListの明細数以上にgetViewが呼ばれている。
こんな感じ。
getView:265]0 <- この数字がポジション。
08-16 09:09:26.132: I/LogUtil(3743): [SDListAdapter#getView:265]0
08-16 09:09:26.136: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]0
08-16 09:09:26.136: I/LogUtil(3743): [SDListAdapter#getView:265]1
08-16 09:09:26.136: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]1
08-16 09:09:26.140: I/LogUtil(3743): [SDListAdapter#getView:265]2
08-16 09:09:26.140: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]2
08-16 09:09:26.140: I/LogUtil(3743): [SDListAdapter#getView:265]3
08-16 09:09:26.140: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]3
08-16 09:09:26.140: I/LogUtil(3743): [SDListAdapter#getView:265]4
08-16 09:09:26.144: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]4
08-16 09:09:26.144: I/LogUtil(3743): [SDListAdapter#getView:265]5
08-16 09:09:26.144: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]5
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getView:265]0
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]0
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getView:265]1
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]1
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getView:265]2
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]2
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getView:265]3
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]3
08-16 09:09:26.148: I/LogUtil(3743): [SDListAdapter#getView:265]4
08-16 09:09:26.152: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]4
08-16 09:09:26.152: I/LogUtil(3743): [SDListAdapter#getView:265]5
08-16 09:09:26.152: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]5
08-16 09:09:26.152: I/LogUtil(3743): [SDListAdapter#getView:265]0
08-16 09:09:26.152: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]0
08-16 09:09:26.164: I/LogUtil(3743): [SDListAdapter#getView:265]1
08-16 09:09:26.168: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]1
08-16 09:09:26.168: I/LogUtil(3743): [SDListAdapter#getView:265]2
08-16 09:09:26.172: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]2
08-16 09:09:26.172: I/LogUtil(3743): [SDListAdapter#getView:265]3
08-16 09:09:26.172: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]3
08-16 09:09:26.176: I/LogUtil(3743): [SDListAdapter#getView:265]4
08-16 09:09:26.176: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]4
08-16 09:09:26.180: I/LogUtil(3743): [SDListAdapter#getView:265]5
08-16 09:09:26.180: I/LogUtil(3743): [SDListAdapter#getViewLocal:291]5
それだけなら、実害はないかと思ったんだけど、AdapterのgetViewでconvertViewがnullでない場合、Viewを使い回すが、最初の呼び出しにもかかわらず、同一ポジションが複数回呼ばれた場合、Viewを使い回すになり、その時の最初の明細のみ、この現象がおこっているとわかった。(なぜ現象が発生するかまではわからなかった)
なので、使い回しをせずに、毎回inflateするとその現象は起きない。
ただ、それだとレスポンスが悪化するので、複数回呼ばれる原因を確認したところ、AbsListViewで高さのサイズ計算が関係しているみたいだったので、ListViewのレイアウトを確認すると、layout_heightがwrap_contentだった。
この現象がRelativeLayoutのみで発生するのか、LinearLayoutでも発生
のか、までは確認していない。
【対策】
まず、layout_heightをmatch_parentに変えたところ、getViewが複数回呼ばれなくなった。
また、layout_height=“0dp”にして、layout_weight=“1”でも複数回呼ばれない事を確認した。
いや、これはほんとに時間かかりました。最初にボタンが効かなくなる現象を確認したのは今年の2月位で、この時は毎回inflateする事で逃げたのですが、結構多いデータを実機で試したところ、かなり遅かったので、本腰入れて調べ始めて、3日位かかったかと思います。Adapterだけではなく、ListViewもカスタムしていた為、どの機能で発生しているを見つけるまでが大変でした。
getViewが複数回呼び出されている現象がわかってからも、なぜ呼び出されるかの原因は見つける事ができず、幸い、メニューだけはなぜか複数回呼ばれていないので、その機能と発生する機能との違いを順番にソースを書き換えて動作確認し、レイアウトを変更すると発生する事がわかり、それで初めてListViewのlayout_heightが違う事に気づきました。
見た目は正常に動作していて、かつ同一ロジックの明細で一部だけにバグが出ると、見つけるのは、ほんとに時間かかります。
最後に、
また客先常駐の仕事が入り、今回は半年以上続きそうなので、ゆっくりアプリを作り続けます。
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image
-
no image
2015年06月06日
API22
ちょっとした間違いでAPI22にあげたら、Rが作成されなくて回復に丸1日かかりました(泣)。
最終的にはこちらの方のプログを参考にして、回復出来たのですが・・。
http://slumbers99.blogspot.jp/2013/05/eclipse-adt-22-android-sdk-manager-2.html
最初はsupportV7をインストールするだけのつもりだったのですが、
SDKManagerのチェックボックスの外しを忘れたおかげで、部分的にAPI22にあがってしまい、その時点でRは消えています。
なので、API22を削除したのですが、それでも駄目。
で、いろいろ調べてバージョンあわせないと駄目っぽいみたいなんで、1時間かけてAPI22をフルセットアップしたんですけど、それでも駄目。
API22はEclipseにバグがあるみたいで、それはすぐ解消したのですが、Eclipse4.3のADTのバージョンをあわせようとして更新の確認を行ったのですが、なぜかダウンロード出来なかったのです(これはいまでも駄目です)。
仕方がないのとついでにEclipseのバージョンを4.4にあげたら、ようやくADTのバージョンをあわせる事ができたました。
でも、Rは再作成されず。
それで1日終わって、翌日にSDKManagerを確認してみると、上記のブログに書いてあったように、チェックが追加されていたので、それをダウンロードして、ようやくRが再作成されました。
前日にフルダウンロード後にSDKManagerを確認した時には、チェックがついていないのは確認したのですが、なぜに翌日になって、チェックがついているのか???。
まあ、解決したからよかったのですが、Eclipse4,4が悪いのか、API22のbuild_toolが悪いのか、ビルドが遅くなってますね。
1秒位止まる箇所が多々あって、自動ビルド中にカーソルとか動かしているとちょっとイライラします。
あと、AndroidStudioも入れてみたのですが、これはまだ移行するのは止めときます。
使い勝手覚えるだけでも、時間がもったいないので・・。
以上です。
最終的にはこちらの方のプログを参考にして、回復出来たのですが・・。
http://slumbers99.blogspot.jp/2013/05/eclipse-adt-22-android-sdk-manager-2.html
最初はsupportV7をインストールするだけのつもりだったのですが、
SDKManagerのチェックボックスの外しを忘れたおかげで、部分的にAPI22にあがってしまい、その時点でRは消えています。
なので、API22を削除したのですが、それでも駄目。
で、いろいろ調べてバージョンあわせないと駄目っぽいみたいなんで、1時間かけてAPI22をフルセットアップしたんですけど、それでも駄目。
API22はEclipseにバグがあるみたいで、それはすぐ解消したのですが、Eclipse4.3のADTのバージョンをあわせようとして更新の確認を行ったのですが、なぜかダウンロード出来なかったのです(これはいまでも駄目です)。
仕方がないのとついでにEclipseのバージョンを4.4にあげたら、ようやくADTのバージョンをあわせる事ができたました。
でも、Rは再作成されず。
それで1日終わって、翌日にSDKManagerを確認してみると、上記のブログに書いてあったように、チェックが追加されていたので、それをダウンロードして、ようやくRが再作成されました。
前日にフルダウンロード後にSDKManagerを確認した時には、チェックがついていないのは確認したのですが、なぜに翌日になって、チェックがついているのか???。
まあ、解決したからよかったのですが、Eclipse4,4が悪いのか、API22のbuild_toolが悪いのか、ビルドが遅くなってますね。
1秒位止まる箇所が多々あって、自動ビルド中にカーソルとか動かしているとちょっとイライラします。
あと、AndroidStudioも入れてみたのですが、これはまだ移行するのは止めときます。
使い勝手覚えるだけでも、時間がもったいないので・・。
以上です。
2015年05月31日
eclipse stackoverflowerror
客先常駐のお仕事のおかげで、まったUPできていないのですが、アプリはいまだ開発中です(泣)。
いったいどれくらいかかる事やら・・。
で、本日有ったトラブルの備忘録を。
私は基本的なVIEWに対する動作はアプリ内で統一する為に、個々のVIEW単位にライブラリプロジェクトを作成して、それを参照しているのですが、この参照関係の指定を誤ると、eclipseがstackoverflowerrorしちゃうんですよね。(参照がループするような指定をすると出る)
以前出た時は、まだprojectのプロパティが効いていたので修正出来たのですが、今日出たやつはプロパティからプロジェクトが消えていて、なおかつ追加ボタンを押しても、なにも動作しなくなったんです。
さすがに焦って、いろいろ調べたのですが、ネット上で見つからないため、試しにproject.propertiesを見たところ・・・。
ありました。参照プロジェクトが(嬉)。
ここを修正したら、無事にstackoverflowerrorが解決しました。
以上です。
いったいどれくらいかかる事やら・・。
で、本日有ったトラブルの備忘録を。
私は基本的なVIEWに対する動作はアプリ内で統一する為に、個々のVIEW単位にライブラリプロジェクトを作成して、それを参照しているのですが、この参照関係の指定を誤ると、eclipseがstackoverflowerrorしちゃうんですよね。(参照がループするような指定をすると出る)
以前出た時は、まだprojectのプロパティが効いていたので修正出来たのですが、今日出たやつはプロパティからプロジェクトが消えていて、なおかつ追加ボタンを押しても、なにも動作しなくなったんです。
さすがに焦って、いろいろ調べたのですが、ネット上で見つからないため、試しにproject.propertiesを見たところ・・・。
ありました。参照プロジェクトが(嬉)。
ここを修正したら、無事にstackoverflowerrorが解決しました。
以上です。
2015年04月10日
疑問 dialogFragmentの getSupportFragmentManager()
1月から3月まで客先常駐の仕事が入ったので、中断してました。
4月から2週間だけ空きますが、5月いっぱい、また客先常駐のお仕事・・。
今回は疑問ですね。
dialogFragmentにはgetFragmentManager()が準備されているのに、
getSupportFragmentManager()はないんですよね。
getFragmentManager()だとnullで帰ってくるし・・。
FragmentActivityのgetFragmentManager()とは別物なんでしょうかね?
(もちろんandroid-support-v4.jarは入れている状態です)
なんででしょうか・・。
4月から2週間だけ空きますが、5月いっぱい、また客先常駐のお仕事・・。
今回は疑問ですね。
dialogFragmentにはgetFragmentManager()が準備されているのに、
getSupportFragmentManager()はないんですよね。
getFragmentManager()だとnullで帰ってくるし・・。
FragmentActivityのgetFragmentManager()とは別物なんでしょうかね?
(もちろんandroid-support-v4.jarは入れている状態です)
なんででしょうか・・。
2015年01月17日
JAVA メソッドのパラメータ
<追記です>
私の勘違いでした。ごめんなさい。
JAVAの基本的な事を知らなかったためにちょっと嵌りました(汗)。
メソッドに受け渡しにオブジェクトを渡すと、メソッド内でオブジェクトを編集した場合、呼び出し元も参照できるので、戻り値を1つしか設定できないJAVAの仕様にも関係して助かっていたのですが、
オブジェクトを配列で渡すと、駄目なんですね・・・。
配列はオブジェクトでないと知りました・・・。
配列自体をオブジェクトで渡して、メソッド側でキャストする方法もあると思うのですが、
メソッドはいろいろなオブジェクトでオーバーロードしていたので、書き直すのがめんどいので、確認してません。
以上です。
<訂正です>
上記記載は私の勘違いかもしれません。
配列を戻すように修正しても、やっぱり駄目だったので、これの為ではなかったかもしれません。
原因わかったら、アップします。
私の勘違いでした。ごめんなさい。
メソッドに受け渡しにオブジェクトを渡すと、メソッド内でオブジェクトを編集した場合、呼び出し元も参照できるので、戻り値を1つしか設定できないJAVAの仕様にも関係して助かっていたのですが、
オブジェクトを配列で渡すと、駄目なんですね・・・。
配列はオブジェクトでないと知りました・・・。
配列自体をオブジェクトで渡して、メソッド側でキャストする方法もあると思うのですが、
メソッドはいろいろなオブジェクトでオーバーロードしていたので、書き直すのがめんどいので、確認してません。
以上です。
<訂正です>
上記記載は私の勘違いかもしれません。
配列を戻すように修正しても、やっぱり駄目だったので、これの為ではなかったかもしれません。
原因わかったら、アップします。
2015年01月10日
備忘録 EditTextのonClickとonFoucasChangeの関係
EditTextでonClickとonFoucasChangeのリスナーを同時に指定すると、
FoucasChangeを伴なわないClickがonClickだけ、
appからのrequestFoucasがonFoucasChangeだけ、動くのは良いとして、
FoucasChangeを伴うClickがonFoucasChangeだけしか動かないのはびびりました(笑)。
ちなみにEditTextはkeyListenerをnull にして入力不可にしていますから、その関係でしょうかね?
まあ、自分的にはこの仕様には助かっていますが・・。
FoucasChangeを伴なわないClickがonClickだけ、
appからのrequestFoucasがonFoucasChangeだけ、動くのは良いとして、
FoucasChangeを伴うClickがonFoucasChangeだけしか動かないのはびびりました(笑)。
ちなみにEditTextはkeyListenerをnull にして入力不可にしていますから、その関係でしょうかね?
まあ、自分的にはこの仕様には助かっていますが・・。
2014年12月16日
備忘録 genymotionとEnvironment.getExternalStorageDirectory().getPath()の関係
開発はgenymotionを使っているんだけど、CSVファイルをSDCARDに出力しようと思ったら、ファイルが見つからなくて、ちょっと嵌ったのでメモ。
genymotionでEnvironment.getExternalStorageDirectory().getPath()を行うと、/storage/emulated/0で帰ってくるけど、eclipseのddmeで見ると、そのフォルダにはなくて、なぜか、/mnt/shell/emulated/0の配下にある。
多分、エイリアスの関係だろうといい加減に納得し、調査はしてません。
以下を参考にさせていただきました。
http://stackoverflow.com/questions/18530114/accessing-files-from-genymotion-sd-card
genymotionでEnvironment.getExternalStorageDirectory().getPath()を行うと、/storage/emulated/0で帰ってくるけど、eclipseのddmeで見ると、そのフォルダにはなくて、なぜか、/mnt/shell/emulated/0の配下にある。
多分、エイリアスの関係だろうといい加減に納得し、調査はしてません。
以下を参考にさせていただきました。
http://stackoverflow.com/questions/18530114/accessing-files-from-genymotion-sd-card
2014年12月07日
styleでlayout_marginを指定すると・・
styleでlayout_marginを指定すると、xmlでlayout_marginを指定し直しても、styleの方が優先されているように見えるだけど・・。
その他のコマンドはxmlで指定し直された方が反映されているのに、layout_marginだけなぜに?
自分の指定の仕方が悪いのかな・・。
原因追及はしません。
その他のコマンドはxmlで指定し直された方が反映されているのに、layout_marginだけなぜに?
自分の指定の仕方が悪いのかな・・。
原因追及はしません。
2014年11月27日
訳のわからない現象
本日、訳のわからない(自分だけかもしれない)現象が発生。
いままで動いていたGridViewのドラッグ&ドロップでの並び替えロジックだったのに、
Layoutをちょっと変更したら、なぜかlongclickが効かなくなった。
なにを変更したかと言うと、gridviewのインナーレイアウトで
linearLayoutが2重になっていて、不要のワーニングが出ていたので、1つにまとめただけなんだけど、
そうしたら、なぜかlongclickが効かなくなった訳です。
この変更以外にも、他の影響しないロジック部分をかなり変更していたので、
それが原因とわかるまで、また時間がかかってしまった。
この現象、いつでも再現できますが、原因追及は止めときます。
いままで動いていたGridViewのドラッグ&ドロップでの並び替えロジックだったのに、
Layoutをちょっと変更したら、なぜかlongclickが効かなくなった。
なにを変更したかと言うと、gridviewのインナーレイアウトで
linearLayoutが2重になっていて、不要のワーニングが出ていたので、1つにまとめただけなんだけど、
そうしたら、なぜかlongclickが効かなくなった訳です。
この変更以外にも、他の影響しないロジック部分をかなり変更していたので、
それが原因とわかるまで、また時間がかかってしまった。
この現象、いつでも再現できますが、原因追及は止めときます。
2014年11月18日
備忘録 setContentViewその2
原因らしきものが推測できた。
【現象】
findviewで正しく取得されているにも関わらず、そのviewに対してのアクションがされない
(onClick setTextが反映されない)
【対策】
setContentViewを2カ所実行していた箇所があったので、片方を削除
【原因】
setContentViewで同一レイアウトを指定していたので、同じレイアウトが上書きされている状態
そこにfindviewすると、同一IDのため、最初のレイアウトと紐付けしていたと思われる。
しかし、画面に表示されているのは、後のレイアウトのため、なにもアクションが効かなかったように見えた(と推測される)
【感想】
原因わかるまで2時間かかった・・・
【現象】
findviewで正しく取得されているにも関わらず、そのviewに対してのアクションがされない
(onClick setTextが反映されない)
【対策】
setContentViewを2カ所実行していた箇所があったので、片方を削除
【原因】
setContentViewで同一レイアウトを指定していたので、同じレイアウトが上書きされている状態
そこにfindviewすると、同一IDのため、最初のレイアウトと紐付けしていたと思われる。
しかし、画面に表示されているのは、後のレイアウトのため、なにもアクションが効かなかったように見えた(と推測される)
【感想】
原因わかるまで2時間かかった・・・