2010-04-08 10 views
6

Ich habe noch nie zuvor mit Plug-in-Fragmenten gearbeitet. Ich dachte, dass ich durch das Erstellen einer neuen Klasse innerhalb eines Fragments und das Exportieren des Pakets, das es im Manifest des Fragments enthält, auf diese Klasse von einem anderen Plug-in aus zugreifen könnte, das bereits eine Abhängigkeit vom Host-Plug-In hat. Allerdings kann ich das nicht funktionieren lassen. Sind die Inhalte eines Fragments für jedes Plug-in neben dem Host-Plug-In sichtbar? Wenn ja, muss ich etwas Besonderes tun, um dies zu ermöglichen?Sind die Inhalte eines Fragments außerhalb des Host-Plugins sichtbar?

Antwort

8

Das Problem ist nicht, dass der Inhalt des Fragments für ein anderes Plugin nicht sichtbar ist: Sie sind - versuchen Sie einfach, z. Eine Eigenschaftendatei aus dem Klassenpfad, sie funktioniert immer noch, wenn diese Eigenschaftendatei vom Fragment bereitgestellt wird.

Aber was Sie nicht haben, ist Kompilierzeit Informationen über den Inhalt des Fragments. Das ist das Prinzip eines Fragments: Man kann nicht davon abhängig sein. Und Sie wissen nicht, ob jemand Fragmente installiert hat oder nicht.

Es ist auch nicht nur ein Problem, dass nur "irgendein Plug-in neben dem Host-Plug-in" hat. Es ist ein Problem, dass sogar das Host-Plugin selbst hat. Es weiß nicht über die Existenz des Fragments zur Kompilierzeit.

Sie können auch nicht zuverlässig ein Fragment verwenden, um Teile der Klassen des Host-Plug-Ins zu überschreiben: FAQ Can fragments be used to patch a plug-in?, wenn Sie das möchten. Die Seite beschreibt auch, wie es gemacht werden kann.

Hoffe, das hilft.

+0

Vielen Dank. Das alles macht für mich jetzt Sinn, dass es geschrieben ist - ich hätte erkennen sollen, dass selbst das Host-Plug-in keine Informationen über seine Fragmente zur Kompilierungszeit verwenden kann. Ich war ursprünglich neugierig auf Fragmente, weil ich Testcode darin einfügen wollte. Die Unfähigkeit, auf Testcode außerhalb des Fragments zuzugreifen, ist tatsächlich ein netter Vorteil. –

Verwandte Themen