Ich habe gerade eine Antwort für jemanden geschrieben, der von findViewById verwirrt wurde, und ich erkannte, dass ich eine Lücke in meinem Verständnis habe. Diese Frage ist nur für Wissen und Neugier.Wie findViewById eine Ansicht initialisiert
diese Bedenken Sie:
button = (Button)findViewById(R.id.button);
findViewById
gibt eine Instanz von View
, die dann auf die Zielklasse umgewandelt wird. Alles gut bis jetzt.
Um die Ansicht einzurichten, erstellt findViewById
einen AttributeSet
aus den Parametern in der zugehörigen XML-Deklaration, die es an den Konstruktor View
übergibt.
Wir werfen dann die View
Instanz auf Button
.
Wie wird der AttributeSet
wiederum an den Button
Konstruktor übergeben?
[EDIT]
So war ich verwirrt ein :). Der springende Punkt ist, dass, wenn das Layout aufgebläht ist, die View-Hierarchie bereits eine Instanz der View-Nachkommen-Klasse enthält. findViewById gibt einfach einen Verweis darauf zurück. Offensichtlich, wenn Sie darüber nachdenken - doh ..
+5 für die queston .... wegen Ihrer Frage habe ich recherchiert und finden Sie die vollständigen Informationen über die basi c Flow .... danke @Leonidos – Pragnani