Verwenden eines Array-Verweises als XML-Attribut für die benutzerdefinierte Android-Ansicht
Dieses problem wurde gelöst, siehe Kommentare für details.
Ich bin die Erweiterung einer bestehenden Android-Ansicht und dem laden einiger benutzerdefinierte Attribute, wie beschrieben in Deklarieren Sie eine benutzerdefinierte android-UI-Elemente mit XML und Die Definition von benutzerdefinierten attrs.
Attribute mit booleschen und integer-Formate funktionieren, aber wenn ich versuche, geben Sie eine Referenz auf ein array-Ressource, die Anwendung stürzt ab beim Start. Ich habe ein integer-array in einer xml-Ressource-Datei, und ich versuche, es zu benutzen als ein Attribut für die benutzerdefinierte Ansicht.
Kann ich mit dem array-Ressource zu setzen, die "Einträge" - attribute des android-Spinner-Klasse mit keine Fehler, es scheint also ein problem in meiner Implementierung. Die logcat-Meldungen scheinen Sie nicht zu liefern spezifische Informationen über den Absturz, aber ich bin noch auf der Suche, so werde ich aktualisieren, wenn ich etwas finden.
Die Attribute werden deklariert, indem Sie (in attrs.xml):
<declare-styleable name="CustomView">
<attr name="values" format="reference"/>
<attr name="isActive" format="boolean"/>
</declare-styleable>
Array ist definiert als (in arrays.xml):
<integer-array name="nums">
<item>1</item>
<item>2</item>
<item>3</item>
</integer-array>
Und ich bin Referenzierung des Arrays:
<com.test.CustomView cv:values="@array/nums" />
Und dadurch die Anwendung zum Absturz sofort. Außerdem, wenn ich mich auf eine Farbe Ressource anstelle eines Arrays, dann wird die Anwendung nicht abstürzt. Weiß jemand, wie man mit diesem problem umzugehen?
InformationsquelleAutor der Frage Michael | 2011-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur gehen, um mit der Bahn von deiner Frage hier, da Ihr Beitrag zeigt zuerst, wenn Sie google so etwas wie "array reference-XML-Attribut benutzerdefinierte Ansicht", sodass jemand, der vielleicht hilfreich.
Wenn Sie möchten, dass Ihre benutzerdefinierte Ansicht eine Referenz zu einem array von stringskönnen Sie die Android vorhandenen
android:entries
XML-Attribut, statt der Schaffung einer völlig neuen benutzerdefinierten Attributs.Tun Sie einfach das folgende in
res/values/attrs.xml
:Dann tun Sie dies in Ihre benutzerdefinierte Ansicht Konstruktor:
Dann sollten Sie in der Lage sein, auf ein string-array über die
android:entries
- Attribut, wenn Sie fügen Sie Ihre benutzerdefinierte Ansicht einer XML-layout-Datei. Beispiel:Dies ist genau wie es gemacht wird in der ListView Klasse (schau in den Quelltext, du wirst sehen).
InformationsquelleAutor der Antwort XåpplI'-I0llwlg'I -
Späte Antwort, die anderen Antworten gut funktioniert, wenn das array ein string-array. Allerdings
arr.getTextArray(...)
wenn das array ist ein array von Referenzen, z.B.geben Sie
res/drawable/a.png
als charsequence, anstatt die Ressource-id.Die richtige Art und Weise zu analysieren, die ein array von Referenzen ist wie folgt:
InformationsquelleAutor der Antwort Jin
Die Frage über das erhalten ein integer-array, in meinem Fall, ich brauche zu Lesen, die Farben(int) aus einem array für meine eigene Ansicht, styeable definition wie folgt:
Dann verwende ich meine benutzerdefinierte Ansicht wie folgt:
Die Farben, die definition ist wie folgt:
So, ich muss erhalten die Farben in meine benutzerdefinierte Ansicht (ColorPickerView), code wie folgt:
Hier ist der Druck von colorsArray:
Hoffe, dies hilft einige Leute.
InformationsquelleAutor der Antwort LiuWenbin_NO.