webentwicklung-frage-antwort-db.com.de

Falsche Variablennamen in überschriebenen Methoden

Wenn ich Android Studio eine Überschreibungsmethode generieren lasse, wird die Methode mit seltsamen Parameternamen generiert.

Zum Beispiel sollte laut Dokumentation onCheckedChanged so aussehen:

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){}

aber ich habe

public void onCheckedChanged(CompoundButton compoundButton, boolean b){}

oder onDateSet in DatePickerDialog habe ich:

onDateSet(DatePicker datePicker, int i, int i1, int i2)

anstatt

onDateSet(DatePicker view, int year, int month, int dayOfMonth)

Ich habe Android SDK in einem Projekt eingerichtet und Sources für Android 27 installiert.

Irgendwelche Ideen?

Vielen Dank

13
Saintan

Es bezieht sich auf die compileSdkVersion, die in Ihrer build.gradle-Datei definiert ist. Sie sollten Sources for Android SDK für die API installieren, die Sie als compileSdkVersion verwendet haben. Versuchen Sie daher, im SDK-Manager eine Quellversion zu installieren, die compileSdkVersion entspricht.

Ich habe den compileSdkVersion 28 in der build.gradle Datei eingestellt. Hier ist das Ergebnis vor und nach der Installation der Quellcode-Version 28 (Hinweis: Danach sollten Sie AndroidStudio neu starten):

Vor:

val textWatcher = object: TextWatcher {

    override fun afterTextChanged(p0: Editable?) {
    }

    override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
    }

    override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
    }
}

Nach dem:

val textWatcher = object: TextWatcher {

    override fun afterTextChanged(s: Editable?) {
    }

    override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
    }

    override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
    }
}

UPDATE: 23.10.2008

Das Problem bei AppCompat-v28 -Bibliotheken wie der Klasse RecyclerView beruht auf ihren Artefakten aar. Wenn Sie Bibliotheken der Version 27.1.1 verwenden, ist das Problem behoben. Es spielt keine Rolle, welche Distribution von Version 28 Sie verwenden (z. B. 28.0.0, 28.0.0-alpha1, 28.0.0-alpha3, 28.0.0-rc1, 28.0.0-rc2 usw.) In Distributionen der Version 28 sind die Parameternamen für abstrakte Methoden verschleiert.

public abstract static class Adapter<VH extends RecyclerView.ViewHolder> {

    public Adapter() {
    }

    @NonNull
    public abstract VH onCreateViewHolder(@NonNull ViewGroup var1, int var2);

    public abstract void onBindViewHolder(@NonNull VH var1, int var2);

    ...
}

Es scheint also, dass es keine Möglichkeit zur Lösung gibt, bis es in den nächsten Distributionen behoben würde.

10
aminography

Wie Aminography sagte, liegt dies daran, dass Sie keine Quellen für compileSdk installiert haben, die Sie verwenden. Führen Sie zum Installieren von Quellen die folgenden Schritte aus:

  1. Überprüfen Sie die compileSdk-Version Ihres Projekts (aus der build.gradle-Datei auf App-Ebene). Wie Sie im folgenden Bild sehen können, ist meine compileSdk-Version 26. Also muss ich Quellen für Plattform 26 installieren.

 enter image description here

2. Rufen Sie den SDK-Manager auf und aktivieren Sie auf der Registerkarte SDK-Plattformen die Option show package details, falls diese nicht aktiviert ist. Installieren Sie dann die Quellen für Ihre compileSdk-Version (in meinem Fall sind es 26). Das ist es. Nun erhalten Sie den entsprechenden Parameternamen.

 enter image description here

1
Chirag Talaviya

Die Parameternamen können beliebig sein, sie haben keinen Einfluss auf den Code. Sie können sie durch beliebige Namen ersetzen.

+1 für Android Studio sollte eher korrekte Variablennamen implementieren, damit wir eine ungefähre Vorstellung vom Zweck dieser Variablen bekommen, ohne die Dokumentation durchgehen zu müssen.

Ab sofort rate ich Ihnen, auf die Dokumentation der von Ihnen verwendeten Funktion zu verweisen. ignorieren Sie einfach die Variablennamen. ... kleinere Namen können zur Verringerung der Codegröße beitragen und in einigen Fällen die Lesbarkeit verbessern, sofern der Zweck der Variablen klar angegeben ist.

0
m__