Ich habe ein Problem mit der Suche nach Schaltflächen. Ich habe eine AlertDialog
, wo ich eine von 5 Optionen auswähle. Wenn ich eine Option auswähle, möchte ich die Farbe der Schaltfläche ändern, auf die ich geklickt habe. Ich deklarierte Schaltflächen in der XML-Datei in <RealativeLayout>
, aber wenn ich versuche, meine Schaltfläche nach ID zu finden (IDs sind wie "ID1", "ID2" ...) mit der Methode findViewById
, gibt es einen Fehler, der sagt, dass ich diese Methode nicht wie ich verwenden kann:
Wie kann ich das beheben oder vielleicht sollte ich eine andere Methode verwenden?
BEARBEITEN:
Ich glaube, ich habe mein Problem gelöst. Ich habe eine der Methoden von Button verwendet: getId () wie folgt:
%Vor% In den XML
-Dateien geben wir den Ressourcen IDs, und dann verwenden die Compiler all diese, um gen/R.java
zu generieren. Im Wesentlichen sind diese IDs int-Variablen, die zur Klasse R gehören.
Ein Beispiel für R.java:
Nur weil ein String
existiert, das einen gültigen Namen einer Variablen ( R.id.id1
) enthält, kann er nicht auf diese Variable zugreifen. Um dies zu tun, kann man reflection
verwenden. In diesem Fall glaube ich jedoch, dass es eine unnötige Komplikation ist und sogar langsamer sein wird.
findViewById
benötigt eine ID (Integer-Variable): Sie können dieser Funktion keinen String
zuweisen. Sie sollten einen ganzzahligen Wert verwenden, und zwar diejenigen, die den int-Variablen in R.java
entsprechen.
Zum Beispiel:
Sie können den ganzzahligen Wert dynamisch auswählen:
%Vor% Es wird auch empfohlen, mehr erklärende IDs zu verwenden, zB: buttonDoThis
, buttonDoThat
.
Sie versuchen, findViewById () mit einem String zu verwenden, der den Variablennamen der ID enthält. Java unterstützt diese Art von dynamischen Variablennamen nicht, da Variablennamen nur zur Kompilierzeit und nicht zur Laufzeit bekannt sind. Was versuchst du zu machen? Sie müssen einen anderen Weg finden, um dieses Problem zu lösen. Bitte erläutern Sie weiter und wir können Ihnen Vorschläge machen.
Wenn Sie für den Dialog Ihre eigene layout.xml verwenden, müssen Sie sie zuerst aufblasen und die Ansicht Ihrem Dialog Builder geben.
%Vor%