findViewById で混乱している人への回答を書いたところ、自分の理解にギャップがあることに気付きました。この質問は、知識と好奇心のみを対象としています。
このことを考慮:
button = (Button)findViewById(R.id.button);
findViewByIdのインスタンスを返しView、それがターゲット クラスにキャストされます。これまでのところすべて順調です。
ビューをセットアップするために、 のコンストラクターに渡す関連付けられた XML 宣言のパラメーターから を構築しfindViewByIdます。AttributeSetView
View次に、インスタンスをにキャストしますButton。
get はどのようにコンストラクターAttributeSetに渡されますか?Button
[編集]
だから私は混乱していた:)。全体的なポイントは、レイアウトがインフレートされると、ビュー階層にはビューの子孫クラスのインスタンスが既に含まれているということです。findViewById は単にそれへの参照を返します。あなたがそれについて考えるとき明らかです-ド..