Android-broncode voor ProgressBar.java slaat nergens op

Ik bekijk de ProgressBar.java-broncode van de SDK van Android. Op regel 191 van android.widget.ProgressBar staat:

 mMinHeight = a.getDimensionPixelSize(R.styleable.ProgressBar_minHeight, mMinHeight));

Waarom gebruikt het mMinHeight tegelijkertijd in de parameterlijst terwijl het wordt geïnitialiseerd? Kan iemand hier licht op werpen? De volledige broncode kan hier worden gevonden op grepcode .

2

2 antwoord

Zie op regel 171 waar het initProgressBar aanroept? Met die methode wordt mMinHeight geïnitialiseerd op de waarde 24. Vervolgens gebruikt de aanroep van getDimensionPixelSize dat als de standaardwaarde.

4
toegevoegd
Oh, dat heb ik gemist. Soms is het moeilijk om door al die broncode te bladeren en het verschijnt na een tijdje als spaghetti.
toegevoegd de auteur Igor Ganapolsky, de bron

De tweede parameter is slechts een standaardwaarde die moet worden geretourneerd als getDimensionPixelSize de gevraagde waarde niet kan vinden. Het is gebruikelijk (als enigszins raar) om de variabele die u probeert in te stellen als de standaardwaarde door te geven. In feite zegt deze code "stel deze waarde in als je die hebt, of laat de variabele gewoon zoals het is als je niet".

1
toegevoegd
Het is niet echt als een javascript-callback. Een callback is eigenlijk gewoon een functie (of zijn adres) doorgeven als een parameter. De Android-methode neemt hier gewoon een standaardwaarde (die kan worden gedefinieerd als elk type, inclusief een callback als je dat wilt) door de gebruiker, en retourneert deze standaardwaarde als deze geen echte waarde kan vinden om te retourneren.
toegevoegd de auteur MusiGenesis, de bron
Interessant, dus dit is als een terugbelstijl in JavaScript?
toegevoegd de auteur Igor Ganapolsky, de bron