Language Injection richtig verwenden

Android-Studio: Editor (Logo)
Was versteht man unter „Language Injection“?

Darunter versteht man allgemein ein Feature zur Integration einer Sprache (z. B. AIDL, HTML, JSON, ASM, C++..) in eine andere Sprache. In Android Studio werden derzeit Java und Kotlin als Programmiersprachen eingesetzt (Stand: Dezember 2017) und zur Injektion einer fremden Sprache in eine dieser beiden Programmiersprachen ein String-Literal verwendet.

Die Sprachen-Injektion bietet die vollständige Unterstützung einer fremden Sprache innerhalb einer anderen Sprache an. So wird etwa die Syntax der fremden Sprache im Literal entsprechend der Sprache hervorgehoben. Ohne dieses sogenannte „Syntax-Highlighting“ würde sich ein Programmierer schwerer bei der Verwendung der fremden Sprache im bestehenden Code tun, da die Syntax ohne Injektion schlicht in grün angezeigt werden würde. Ein weiterer Vorteil ist die „Autovervollständigung“ für diese fremde Sprache. So werden dir z. B. Vorschläge für HTML angeboten und du musst dir nur noch ein passendes TAG aussuchen.

Im folgenden Screenshot sieht man z. B. oben das String-Literal mit „Syntax Highlighting“ für HTML innerhalb von „Language Injection“ und darunter das gleiche Literal ohne diese Unterstützung:

Unterschied: Language Injection vs. Nicht Language Injection

 

Voraussetzung:
Um dir zeigen zu können, wie "Language Injection" in Android Studio angewendet wird, musst du zunächst ein Android-Projekt anlegen. Sofern du die verlinkte Anleitung durchgegangen bist, öffnest du die Java-Klasse "MainActivity.java" oder alternativ eine von dir angelegte Java-Klasse.

 

Schritt 1: „Inject language or reference“ auswählen
Im ersten Schritt legst du innerhalb Java-Klasse in der "onCreate()"-Methode einen String mit beliebigem Namen (z. B. myString) an. Anschließend setzt du den Cursor zwischen die Anführungsstriche und klickst dann entweder auf die kleine "Glühbirne" links neben dem String oder drückst "ALT und ENTER" gleichzeitig. 

Language Injection verwenden (Schritt 1)
Im sich öffnenden Kontextmenü wählst du den Eintrag "Inject language or reference".

Language Injection verwenden (Schritt 1b)

 

Schritt 2: Sprache auswählen
Sobald du im letzten Schritt auf "Inject language or reference" geklickt hast, öffnet sich eine Liste mit allen verfügbaren bzw. unterstützten Sprachen zur Injektion. Wir wählen für unser Beispiel "HTML" und klicken dementsprechend auf diesen Eintrag.

Language Injection verwenden (Schritt 2a)
Danach wird dir angezeigt, dass HTML temporär injiziert wurde. Drücke nun wieder gleichzeitig auf "ALT und EINGABE". 

Language Injection verwenden (Schritt 2b)

 

Schritt 3: „Edit HTML Fragment“ auswählen
Sobald du "ALT und EINGABE" im vorhergehenden Schritt gedrückt hast, wird das Kommentar "//language=HTML" über dem String eingefügt und es erscheint links neben dem String wieder die Mini-Glühbirne. Klicke jetzt auf diese "Glühbirne" und wähle im Kontextmenü den Eintrag "Edit HTML Fragment".

Language Injection verwenden (Schritt 3a)

 

Schritt 4: HTML hinzufügen & Auto-Completion nutzen
Sobald du "Edit HTML Fragment" im letzten Schritt ausgewählt hast, öffnet sich die Datei "HTML Fragment.html" im unteren Bereich. Hier schreibst du nun deinen HTML-Code hinein, der gleichzeitig auch oben im Fragment zwischen den Anführungsstrichen eingefügt wird. Wie du im String vielleicht schon erkannt hast, werden nun die Tags "<body>" und "<h1>" im Sinne des "Syntax-Highlightings" entsprechend hervorgehoben.

Language Injection verwenden (Schritt 4a)
Ein weiterer Vorteil ist die "Autovervollständigung (Autocompletion)" für eine fremde Sprache. In unserem Beispiel bietet uns Android-Studio etwa Vorschläge zur Vervollständigung von HTML-TAGs an, wie im nachfolgenden Screenshot gut zu sehen ist.

Language Injection verwenden (Schritt 4b)

 

Schritt 5: „Language Injection“ deaktivieren (optional)
Falls du "Language Injection" wieder abschalten möchtest, musst du den Cursor in das Fragment setzen und dann auf die Glühbirne links neben dem String gehen. Klicke danach im Kontextmenü auf "Un-inject Language/Reference".

Language Injection verwenden (Schritt 5a)
Der HTML-Code zwischen den Anführungsstrichen sollte danach vollständig in grün erscheinen:

Language Injection verwenden (Schritt 5b)