Ich habe ein Layout erstellt, das zwei Schaltflächen enthält: Weiter und Zurück. Zwischen den Schaltflächen generiere ich einige dynamische Ansichten. Wenn ich die Anwendung zum ersten Mal starte, möchte ich die Schaltfläche "Zurück" deaktivieren, da keine vorherigen Ansichten vorhanden sind. Ich möchte auch die Schaltfläche "Weiter" deaktivieren, wenn nicht mehr Ansichten angezeigt werden sollen. Gibt es überhaupt eine Möglichkeit, die Tasten zu deaktivieren?
371
Sie können es in Ihrem XML nicht aktivieren oder deaktivieren (da Ihr Layout zur Laufzeit festgelegt ist), aber Sie können festlegen, ob es beim Start der Aktivität mit anklickbar ist
android:clickable
.quelle
Sie schreiben einfach eine einzelne Codezeile in Ihre Aktivität
Wenn Sie dieselbe Schaltfläche aktivieren möchten, schreiben Sie einfach
quelle
((Button)findViewById(R.id.mybutton)).setEnabled(false);
Ja, es kann in XML deaktiviert werden, indem nur Folgendes verwendet wird:
quelle
android:enabled
wann Sie mit der Eingabe beginnen. (setEnabled
funktioniertIn Java, sobald Sie die Referenz der Schaltfläche haben:
Zum Aktivieren / Deaktivieren der Schaltfläche können Sie Folgendes verwenden:
Oder:
Da Sie die Schaltfläche von Anfang an deaktivieren möchten, können Sie button.setEnabled (false) verwenden. in der onCreate-Methode. Andernfalls können Sie in XML direkt Folgendes verwenden:
Damit:
quelle
In meinem Fall,
funktioniert einwandfrei und aktiviert und deaktiviert die Schaltfläche wie gewünscht. Sobald der Schaltflächenstatus deaktiviert ist, kehrt er nie wieder in den aktivierten Status zurück, obwohl er anklickbar ist. Ich habe versucht, den Zeichenzustand ungültig zu machen und zu aktualisieren, aber kein Glück.
Wenn Sie oder jemand, der ein ähnliches Problem hat, funktioniert es für mich, den Hintergrund wieder zeichnbar zu machen. Funktioniert auf jeder API-Ebene.
quelle
Wenn Sie in Kotlin auf die Schaltflächenansicht mit der ID verweisen, aktivieren / deaktivieren Sie die Schaltfläche wie folgt
layout.xml
activity.kt
quelle
Zuerst in XML machen Sie die Schaltfläche als
android:clickable="false"
oncreate()
Setzen Sie dann in Ihrem Code innerhalb der Methode die Schaltfläche-Eigenschaft aufKlicken Sie dann innerhalb der Schaltfläche auf, um den Code in zu ändern
quelle
FALSCHER WEG IM HÖRER, VARIABLE STATT PARAMETER ZU VERWENDEN !!!
RICHTIGER WEG:
EDIT: Als Antwort auf @ jeroen-bollen
Wenn auf die Ansicht geklickt wird, ruft das View-Klassenobjekt die Methode onClick () zurück, die als Parameter selbst gesendet wird. Daher sollte kein Nullansichtsparameter auftreten, wenn es sich um einen Assertionsfehler handelt kann beispielsweise der Fall sein, wenn die View-Objektklasse in der Zwischenzeit zerstört wurde (z Beispiel durch GC gesammelt) oder Methode wurde aufgrund von Hack manipuliert
wenig über Instanz von & null
drei Wörter vom Autor
WENN SIE FRAGEN, WARUM?
Meistens, um NullPointerException zu vermeiden
Etwas mehr Code spart Zeit bei der späteren Fehlerverfolgung in Ihrem Code und reduziert das Auftreten von Anomalien.
Betrachten Sie folgendes Beispiel:
quelle
v
nicht der Fall istButton
.Mit Kotlin können Sie tun,
quelle