Kürzlich habe ich festgestellt, dass AndroidStudio mich daran erinnert, einige Klassenbesetzungen zu entfernen. Ich erinnere mich, dass wir früher das Ergebnis von findViewById umwandeln mussten, aber jetzt ist es nicht notwendig.
Das Ergebnis von findViewById ist immer noch View. Ich möchte wissen, warum wir die Klasse nicht umwandeln müssen.
Ich kann keine Dokumente finden, die erwähnt wurden. Kann jemand ein Dokument finden?
android
casting
findviewbyid
Eric Zhao
quelle
quelle
<T extends View> T findViewById(int id)
?Antworten:
Ab API 26
findViewById
wird Inferenz für den Rückgabetyp verwendet, sodass Sie nicht mehr umwandeln müssen.Alte Definition:
Neue Definition:
Wenn Sie
compileSdk
also mindestens 26 Jahre alt sind, bedeutet dies, dass Sie davon Gebrauch machen können :)quelle
ClassCastException
.Nach diesem Artikel :
quelle
In älteren Versionen:
Ab Android Studio 3.0 mit SDK 26:
quelle
Android Studio erinnert daran, Casting zu entfernen, wenn Sie allgemeine Attribute aus der View- Klasse verwenden, z. B. Sichtbarkeit oder einige gängige Methoden wie onClick ().
Beispielsweise:
In diesem Fall können Sie einfach schreiben:
quelle
Android 0, Casting bereinigen
Eines der Dinge, die Google in IO 2017 ankündigt, heißt "wegwerfen" :). Android-Entwickler müssen kein manuelles Casting für findViewById () durchführen. Die alte Methode zum Abrufen einer Textansicht mit findViewById () wäre beispielsweise etwa so.
Während der neue Weg so wäre
Es ist eine einfache Änderung. Aber für einen erfahrenen Programmierer kann ein sauberer Code wie dieser Sie sehr glücklich machen und hilft bei Ihrer Codierungsstimmung :)
Dazu mussten Sie in Ihrer App build.gradle nur die projektkompilierte SDK-Version auf Version 26 setzen.
Sie können auch weiterhin auf frühere SDK-Versionen abzielen, sodass es sich um nicht aufdringliche Änderungen handelt.
Nun das eigentliche Problem, wie kann man den alten Code bereinigen, der die ganze Zeit Casting verwendet? Vor allem, wenn Sie Hunderte von Aktivitätsdateien mögen. Sie können dies manuell tun oder einen Praktikanten damit beauftragen 😛. Aber zum Glück für all diese Praktikanten hat sich das Android Studio bereits darauf vorbereitet, uns dabei zu helfen.
Wenn Sie Ihr Caret platzieren (oder auf das redundante Casting klicken), schlägt Android Studio 2 Optionen vor, um das redundante Casting zu handhaben.
Zuerst wird vorgeschlagen, diese redundante Umwandlung zu entfernen, oder Sie können Bereinigungscode auswählen. Dadurch wird die gesamte redundante Umwandlung für diese Datei entfernt. Das ist besser, aber wir wollen mehr. Wir möchten nicht jede Datei öffnen und diese nacheinander bereinigen.
Eines der Dinge, die die IntelliJ-Idee zu etwas Besonderem machen, ist eine Funktion, die als Absichtsaktion bezeichnet wird. Alles, was Sie tun müssen, ist Strg + Umschalt + A zu drücken und dann clean einzugeben. Wählen Sie die Aktion Codebereinigung aus und wählen Sie den gesamten Projektumfang aus. Mit diesen wenigen einfachen Schritten wird Ihr Code viel sauberer.
Ein wichtiger Punkt ist, dass Sie dies mit einem Code-Versionierungssystem tun. Auf diese Weise können Sie die Änderungen vergleichen, die durch die Absichtsaktion vorgenommen wurden, und alle gewünschten Dateien zurücksetzen.
Vom Originalbeitrag kopiert:
https://medium.com/@abangkis/android-0-clean-up-casting-c30acec56cef
quelle
why
nichthow
:The result of findViewById is still View, so i want to know why we don't need to cast the class?
Im Quellcode von
ViewGroup
gibt es eine Umwandlung des return-Arguments. Es besteht also keine Notwendigkeit, erneut zu wirken:quelle