Kennzahlenressourcen unter Android
Zeichenfolgenressourcen
Wir hatten bereits die Attributspezifikation »android:text="@string/hello"« mit dem Attributwert »"@string/hello"« gesehen. Darin ist »string« ein Ressourcentyp und »hello« ein Ressourcenname. Der Ressourcentyp »string« ist der Ressourcentyp von Zeichenfolgen.
- Eine Zeichenfolgenressource (in XML )
@string/hello
In dieser Lektion stellen wir den Ressourcentyp »id« für Kennzahlen (Kennzahlressourcen) vor.
Neue Kennzahlen
- Definieren der Kennzahl »abc«
@+id/abc
Wenn in der main.xml-Datei der Attributwert »"@+id/abc"« zum ersten Mal vorkommt, wird bei der Interpretation jener Datei eine neue Kennzahl generiert.
Hier ist »abc« nur ein Beispiel, statt dessen kann auch ein anderer Bezeichner verwendet werden.
Auf die beschriebene Weise können Namen (wie »abc« oder »xyz«) Kennzahlen zugeordnet werden, ohne daß in der XML-Datei eine bestimmte Kennzahl als Numerale festgelegt werden muß. Die automatische Festlegung hilft dabei, eine doppelte Vergabe derselben Kennzahl für verschiedene Namen zu vermeiden.
Bezüge auf vorhandene Kennzahlen in XML
Eine einmal mit »+« generierte Kennzahl kann dann später innerhalb von XML-Dateien ohne »+« angegeben werden.
- Ein Bezug auf die Kennzahl »abc«
@id/abc
Aber auch wenn in »main.xml« später noch einmal der Attributwert »"@+id/abc"« vorkommt, wird keine neue Kennzahl erzeugt, sondern die schon früher für den Namen »abc« festgelegte Kennzahl verwendet.
Das android:id-Attribut einer Sichtfläche
In einer XML-Datei kann ein Textfeld spezifiziert werden, für dessen Kennzahl der Name »TextView0« festgelegt wird.
main.xml
- …
<TextView android:layout_width="fill_parent"
android:id="@+id/TextView0"
android:layout_height="wrap_content"
android:text="@string/text0" />- …
Bezüge auf vorhandene Kennzahlen in Java
In Java -Quelldateien kann »R.id.abc« für jene Kennzahl für dem Namen »abc« verwendet werden.
Wenn in der main.xml-Datei der Attributwert »"@+id/xyz"« zum ersten Mal vorkommt, könnte ihm beispielsweise der Wert »7« gegeben werden. Spätere Verwendungen von »"@+id/xyz"« oder »"@id/xyz"« stehen dann ebenfalls für jenen Wert »7« und im Java-Quelltext hat der Ausdruck »R.id.xyz« den Wert »7«.
In einer Java -Quelldatei kann dann nach entsprechender Vorbereitung mit »findViewById« eine Referenz auf dieses Textfeld erhalten werden.
Main.java
- …
final android.widget.TextView textView =
( android.widget.TextView )
MainActivity.this.activity.findViewById( R.id.TextView0 );- …
Der Rückgabetyp von »findViewById« ist ein Obertyp des Typs eines Textfelds. So kann jene Methode auch noch Referenzen auf andere Arten von Sichtflächen zurückgeben. Dadurch ist aber nun ein informierter Downcast nötig, bevor eine Zuweisung an eine Variable vom Typ »TextView« erfolgen kann.
Die Datei »R.java«
Die Datei »R.java« wird vom SDK (von aapt) automatisch angelegt und enthält die Definitionen der Ressourcennamen (wie »R.id.TextView0«) für Java.