2016-12-09 3 views
0

Es gibt wahrscheinlich eine einfache Antwort zu diesem, aber Butterknife in vollem Umfang zu versuchen, einige findViewById in @BindViews konvertieren, und bemerkte, dass ich BindView nicht auf Ansichten verwenden kann, die ich deklarieren muss als endgültig, weil Java einen Fehler auslöst, dass 'Variable' x 'möglicherweise nicht initialisiert wurde'.Android, Butterknife, BindView, Finale

Offensichtlich muss ich BindView nicht verwenden, aber nur neugierig auf diesen, um mehr über Java zu lernen. Ich habe ein wenig darüber gelesen, was die endgültige Erklärung bedeutet, aber ich konnte es nicht an Butterknife binden. Danke für die Hilfe.

Antwort

1

Es bezieht sich nicht auf Buttermesser. Wenn Sie eine als endgültig deklarierte member initialisieren möchten, können Sie dies entweder zum Zeitpunkt der Deklaration oder im Konstruktor tun. Im Fall von findViewById und somit Butterknife sind diese beiden Optionen nicht verfügbar. In beiden Fällen verwenden Sie findViewById, die ein gültiges context-Objekt benötigt und nach setContentView erfolgreich verwendet werden kann. Diese beiden Bedingungen werden nie erfüllt, wenn es darum geht, final-Member zu initialisieren. Bitte beachten Sie, dass Codegenerierung verwendet und hinter der Szene verwendet es noch findViewById wie gewohnt

+0

scheint dies tun würde, in dem Code zu arbeiten: final EditText randomvar = (EditText) activityReference.findViewById (R.id.randomID); – nschwan94

+0

Innerhalb einer Methode und nach setContView funktioniert es natürlich – Blackbelt

+0

Ok, das ist, wo die Verwirrung kommt, weil diese Codezeile innerhalb einer Klasse außerhalb der Aktivität aufgerufen wird, noch die Aktivität, auf die verwiesen wird, hat SetContentView aufgerufen. – nschwan94

Verwandte Themen