LayoutParams params = new LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT
);
ImageView img = new ImageView(this);
img.setLayoutParams(params);
card.addview(img);
Eclipse -> Файл -> Новый ... -> Фрагмент проекта -> установите плагин хоста (который находится либо в вашей рабочей области, либо в плагинах на целевой платформе).
Откройте Редактор манифеста плагина (вы можете сделать это с помощью нажав на build.properties
, manifest.mf
или fragment.xml
- если такого файла нет, создайте его вручную)
Во вкладке Расширения нажмите Добавить .. и добавьте org.eclipse.ui.startup
и просмотрите класс, который реализует класс org.eclipse.ui.IStartup
.
Создайте этот класс и реализуйте его. Вам необходимо реализовать метод earlyStartup ()
, который является точкой входа во фрагмент.
Примечание: Строки ниже являются лишь примером. Я не тестировал его, поэтому могут быть ошибки ...
Все, что вам нужно, это (это структура проекта / структура каталогов):
META-INF / MANIFEST.MF контент :
Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: FragmentProject Bundle-SymbolicName: FragmentProject;singleton:=true Bundle-Version: 1.0.0 Bundle-ClassPath: src/,. Fragment-Host: *HostPluginProjectSymbolicName*;bundle-version="1.0.0" Bundle-RequiredExecutionEnvironment: J2SE-1.5 Require-Bundle:
build.properties content:
source.. = src,\ output.. = bin/ bin.includes = META-INF/, ., fragment.xml
fragment.xml content:
<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.2"?> <fragment> <extension point="org.eclipse.ui.startup"> <startup class="FragmentStartClass"> </startup> </extension> </fragment>
FragmentStartClass.java content:
import org.eclipse.ui.IStartup; public class FragmentStartClass implements IStartup { public void earlyStartup() { System.out.println("Hello World From Fragment!"); } }
Ну, прежде всего что Вы пытаетесь выполнить? Вы - верные фрагменты, решение?
Фрагменты являются просто дополнениями к существующему плагину. Нет никакого Активатора Пакета для "запущения" фрагмента. Вы просто получаете дополнительные ресурсы во фрагменте. Вы могли использовать точку расширения, чтобы сообщить хосту, что некоторая особая функциональность была расширена существующим фрагментом. Думайте о нем как о слиянии двух во времени выполнения.
См. это примечание от Wiki Eclipse.
Я думаю, что Вы пытаетесь сделать, лучше подается при помощи точек расширения и отдельных плагинов, поскольку Вы хотите добавить функциональность к основному плагину.
Фрагменты только используются для добавления ресурсов или дополнительных классов к основному плагину.
Я не уверен, можно ли сделать это без плагина хоста знание чего-то о загрузке дополнительного кода реализации фрагмента.
Например:
MyInterface o = null;
try {
Class<?> c = getClass().getClassLoader().loadClass("my.fragment.Activator");
o = (MyInterface) c.newInstance();
} catch (ClassNotFoundException e) {
}
if (o != null) {
o.start();
}
где MyInterface является интерфейсом, определенным в плагине хоста и реализованным Вашим фрагментом.
Иначе мог бы быть должен иметь фрагмент, обеспечивают точку расширения, определяющую расширенный класс, но это - вероятно, больше, чем необходимо.