Właśnie napisałem odpowiedź dla kogoś zdezorientowanego przez findViewById i zdałem sobie sprawę, że mam lukę w moim zrozumieniu. To pytanie dotyczy tylko wiedzy i ciekawości.Jak findViewById zainicjować widok
Rozważ to:
button = (Button)findViewById(R.id.button);
findViewById
zwraca instancję View
, który następnie oddanych do klasy docelowej. Jak dotąd wszystko dobrze.
Aby skonfigurować widok, findViewById
tworzy AttributeSet
z parametrów w powiązanej deklaracji XML, która przechodzi do konstruktora z View
.
Następnie oddaliśmy instancję View
do Button
.
W jaki sposób AttributeSet
przechodzi z kolei do konstruktora Button
?
[EDIT]
Więc byłem zdezorientowany jeden :). Chodzi o to, że gdy układ jest zawyżony, hierarchia widoków zawiera już instancję klasy potomka widoku. findViewById po prostu zwraca referencję do niego. Oczywiste, kiedy o tym pomyślisz - doh ..
+5 za zadanie ... z powodu Twojego pytania Przebadałem i znalazłem pełną informację dotyczącą bazy c flow .... dzięki @Leonidos – Pragnani