Die R.java-Datei wird automatisch vom Compiler generiert und erfordert keine Wartung durch Entwickler. R.java bezieht automatisch alle Ressourcen in die aktuelle Anwendung ein und erstellt basierend auf diesen Ressourcen entsprechende IDs. R.java kann einfach als Ressourcenwörterbuch der aktuellen Android-Anwendung verstanden werden.
Die Betriebsumgebung dieses Tutorials: Windows7-System, Java10-Version, DELL G3-Computer.
1. Einführung in die R.java-Datei
In Android Studio ist das Verzeichnis, in dem sich R.java befindet: app/build/generated/source/r/arm/debug/com.example.dfanghu.myapplication/R. java
gen Die R.java-Datei im Verzeichnis wird automatisch vom Compiler generiert und erfordert keine Wartung durch Entwickler. R.java sammelt automatisch alle Ressourcen in der aktuellen Anwendung und erstellt entsprechende IDs basierend auf diesen Ressourcen, einschließlich: Layoutressourcen, Steuerressourcen, String-Ressourcen, zeichnbare Ressourcen usw. Wir können R.java einfach als das Ressourcenwörterbuch der aktuellen Android-Anwendung verstehen.
Unter der Voraussetzung, dass das aktuelle Projekt keine Fehler enthalten darf, generiert der Compiler beim manuellen Löschen der R.java-Datei sofort eine neue R.java-Datei, wenn Sie dem Verzeichnis res/ eine neue Ressource hinzufügen Fügen Sie sofort die ID dieser Ressource in die R.java-Datei ein. , aber es gibt eine Prämisse, das heißt, das aktuelle Projekt darf keine Fehler enthalten. Wenn festgestellt wird, dass R.java diese Ressource nach der Aktualisierung nicht enthält, müssen Sie prüfen, ob im aktuellen Projekt Fehler vorliegen.
2. R.java-Dateiinhaltsanalyse
R.java-Datei im HelloWorld-Projekt
package com.android.hellworld; public final class R { public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } public static final class layout { public static final int main=0x7f030000; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; } }
Die R.java-Datei enthält standardmäßig vier statische interne Klassen: attr, drawable, layout, string usw. Jede statische interne Klasse Die Klasse entspricht separat einer Ressource. Die statische innere Klasse des Layouts entspricht beispielsweise der Schnittstellendatei im Layout, z. B. public static final int main=0x7f030000 das Layout-Verzeichnis.
Da es derzeit nur eine Bilddatei icon.png im Verzeichnis [drawable-*dpi] gibt, haben icon.png-Dateien mit demselben Namen in unterschiedlichen Details immer nur ein Icon-Attribut in der internen Klasse drawable. Wenn wir ein weiteres Bild im Verzeichnis [drawable-*dpi] hinzufügen, wird der internen Klasse automatisch ein Symbolattribut hinzugefügt.
PS: Benennungsregeln für Ressourcen hinzufügen: Ressourcendateien dürfen nur mit Kleinbuchstaben und Unterstrichen beginnen und nur [a-z0-9_.] darf in nachfolgenden Namen erscheinen, andernfalls wird die R.java-Datei nicht automatisch aktualisiert. und Eclipse wird einen Fehler auslösen.
Verstehen Sie die Quelle des Inhalts in der R.java-Datei. Wenn der Entwickler also eine Datei des entsprechenden Typs in einem beliebigen Unterverzeichnis im Verzeichnis res/ hinzufügt, generiert ADT automatisch eine Datei in der entsprechenden internen Klasse im R.java-Datei Eine statische Konstante vom Typ int, die die hinzugefügte Datei indiziert. Wenn dem Layoutverzeichnis eine neue Schnittstelle hinzugefügt wird, wird die entsprechende statische int-Konstante auch zum öffentlichen statischen endgültigen Klassenlayout hinzugefügt. Im Gegenteil, wenn wir eine Datei im res-Verzeichnis löschen, wird der entsprechende Datensatz in R.java automatisch von ADT gelöscht.
Neben der Indizierungsfunktion zum automatischen Markieren von Ressourcen verfügt die R.java-Datei auch über eine weitere Hauptfunktion. Wenn eine Ressource im res-Verzeichnis in der Anwendung nicht verwendet wird, wird das System die entsprechenden Ressourcen nicht kompilieren APK-Paket der Anwendung, das Ressourcen auf dem Android-Telefon sparen kann.
3. So referenzieren Sie die erforderlichen Ressourcen über die R.java-Datei
1. Referenzieren Sie Ressourcen im Java-Programm Der Suffixname
Das Android-System selbst enthält viele Ressourcen, und wir können sie auch zitieren. Wir müssen nur „Android“ davor hinzufügen, um zu deklarieren, dass die Ressource vom Android-System stammt. Android.R.resource_type.resouce_name
Beispiel: icon.png unter [drawable-*hpi]
Das Bild wird in der R.java-Datei dem Symbolparameter unter der internen Klasse „Drawable“ zugeordnet , die Schreibmethode lautet: R.drawble.icon
2. Referenzressourcen in XML-Dateien
Format: @[package:]type/name
Rufen Sie es über „@drawable/icon“ in XML-Dateien wie main ab .xml- und AndroidMainfest.xml-Dateien. Unter diesen steht „@“ für die R.java-Klasse. „drawable“ repräsentiert die statische innere Klasse „drawable“ in R.java, „/icon“ repräsentiert das statische Attribut „icon“ in der statischen inneren Klasse „drawable“ und dieses Attribut kann auf „drawable-*“ im res-Verzeichnis verweisen dpi“ icon.png-Ressource. Andere Dateitypen sind ähnlich. Alle in R-Dateien definierten Ressourcen können über „@Static_inner_classes_name/resource_name“ abgerufen werden. Zum Beispiel „@id/button“, „@string/app_name“.
Wenn Sie auf Dateien zugreifen, die mit dem Android-System geliefert werden, müssen Sie den Paketnamen „Android:“ hinzufügen. Zum Beispiel: android:textColor="@android:color/red"
4 So fügen Sie der R.java-Datei einen Ressourceneintrag hinzu
Wenn wir in der Layoutdatei das Id-Attribut als Bezeichner für einige Komponenten hinzufügen müssen, können wir den folgenden Ausdruck verwenden: „@+id/string_name“, wobei „+“ bedeutet, dass es in der internen Klasse namens id hinzugefügt wird R.java Ein Datensatz. Beispiel: „@+id/button“ bedeutet, dass der statischen internen Klassen-ID in der R.java-Datei eine Konstante mit dem Namen „button“ hinzugefügt wird. Diese Konstante ist die Kennung der Ressource. Wenn die statische innere Klassen-ID nicht vorhanden ist, wird sie zuerst generiert.
Empfehlungen für entsprechende Video-Tutorials: Java-Video-Tutorial
Das obige ist der detaillierte Inhalt vonWelche Datei ist r.java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!