まず、このバグを解決する方法はすでにわかっていますが、現時点では、なぜ私の修正が機能するのか疑問に思っています。私が遭遇した状況ClassCastException, cannot convert LinearLayout$LayoutParams to AbsListView$LayoutParams
は、次のことをしようとしたときにエラーが発生したことでした (これらの目的のために簡略化されています)。
mLayout = (LinearLayout) getLayoutInflater()
.inflate(R.layout.my_header_layout,
getListView(), false);
mRootView.addView(mLayout);
getListView().addHeaderView(mLayout);
getListView().setAdapter(mAdapter);
私は最終的にそれを分解し、への呼び出しを削除したときに問題が修正されたことを発見しましたmRootView.addView(mLayout)
私の 2 つの質問は、なぜこれが起こっているのかということです。まず、概念的な面では、ヘッダー ビューが既にレイアウトにある場合、全体が死んでしまうのはなぜですか? そのビューが効果的に 2 回レイアウトされようとしているからでしょうか? 1 回はヘッダー用で、もう 1 回は実際のレイアウト用ですか?
第二に、なぜこの例外なのですか?それはひどく説明的ではなく、実際の問題をまったく捉えていないように見えますか? とにかく低レベルの関数が結果で失敗するため、これは高レベルの問題が処理されていない場合ですか?