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