Wichtig
#28252
Most engine-provided views cannot be incrementally extended due to final="true" in layout XML
Der Layout-Editor fügt für alle Layouts beim exportieren standardmäßig die Annotation final="true" hinzu. Dies geschieht, damit man mit dem Layout-Editor auch ein bereits inkrementell erweitertes Layout editieren und als Komplett-Überschreibung speichern kann. Ohne diese Annotation würde geerbte Overlay-Layouts auf das exportierte Layout angewendet. Das würde aber zum Konflikt führen, da diese Änderungen schon in dem exportierten Komplett-Layout enthalten sind.
Die Annotation final="true" sollte aber für Basis-Layouts nicht gesetzt sein, weil sonst die Anwendung keine Chance hat, ein Standardlayout inkrementell zu erweitern. Da aber der Layout-Editor auch für die Erstellung aller neuen Basis-Layouts verwendet wurde, sind diese jetzt alle final.
Lösung
- Die Annotation final="true" von allen Basis-Layouts entfernen. Die Situation dass diese andere inkrementell erweiterte Basislayouts komplett überschreiben darf nicht vorkommen.
- Der Layout-Editor darf nur dann die Annotation final="true" setzten, wenn es bereits inkrementelle Erweiterungen zu dem exportierten Layout gibt (wenigstens solange der Layout-Editor noch keine inkrementellen Overlay-Layouts statt einer Komplettüberschreibung produzieren kann).
Test
- Neue Sicht erstellen und exportieren: Sollte keine final-Annotation haben.
- Sicht aus Basis, die sich über ein Overlay zusammensetzt editieren und exportieren. Im Ergebnis sollte eine final-Annotation enthalten sein.