読者です 読者をやめる 読者になる 読者になる

CalendarViewとListViewが混在する場合の注意点

件名のシチュエーションで変なバグを踏んだので,備忘録.

今作っているアプリのActivityの仕様の1つが以下の内容.
・カレンダーで日付を選択できる.
・日付を選択すると,その日付に紐づく情報がリスト化されて表示される.
まあ,なんてことはなく,
CalendarViewとListViewの組み合わせで終了させるつもりだった.

実装はサクっと完了して,自動テストも全パス,
バーチャルデバイス上の動きにも特に問題はなかったので,
とりあえず自端末にα版としてリリース.

ここまでは本当に順調だったんだけど,
そのアプリを起動して該当のActivityを開こうとしたところ,
アプリが完全にフリーズしてうんともすんとも言わなくなった.
再現性100%であったため,割とシャレにならない状態.

で,色々ググってたら,
以下のような調査をされている方のサイトに遭遇.
灯火: Android : CalendarView のエラー諸々 (* cannot be cast to android.widget.CalendarView$WeekView とか、ずっと GC が走ってアプリが起動しないとか)

今回のようにClaendarViewとListViewが混在して,
かつCalendarViewの高さにwrap_contentを使っていると,こうなるらしい.
対処方法は,CalendarViewの高さを具体的な数字で指定してやること.

layout.xmlを書き換えて再ビルド&再リリースすると,解決しました.