Фрагмент плагина Eclipse

 LayoutParams params = new LayoutParams(
                    LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT
            );
  ImageView img = new ImageView(this);
  img.setLayoutParams(params);
  card.addview(img);
12
задан fap 6 September 2018 в 18:01
поделиться

4 ответа

  1. Eclipse -> Файл -> Новый ... -> Фрагмент проекта -> установите плагин хоста (который находится либо в вашей рабочей области, либо в плагинах на целевой платформе).

  2. Откройте Редактор манифеста плагина (вы можете сделать это с помощью нажав на build.properties , manifest.mf или fragment.xml - если такого файла нет, создайте его вручную)

  3. Во вкладке Расширения нажмите Добавить .. и добавьте org.eclipse.ui.startup и просмотрите класс, который реализует класс org.eclipse.ui.IStartup .

  4. Создайте этот класс и реализуйте его. Вам необходимо реализовать метод earlyStartup () , который является точкой входа во фрагмент.

Примечание: Строки ниже являются лишь примером. Я не тестировал его, поэтому могут быть ошибки ...

Все, что вам нужно, это (это структура проекта / структура каталогов):

  • Fragment-Project - корневой каталог
    • / META-INF
      • MANIFEST.MF
    • / src (который является исходным каталогом)
      • FragmentStartClass.java (реализующие интерфейс org.eclipse.ui.IStartup и метод EarlyStartup)
    • build.properties
    • fragment.xml

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!");

    }


}
17
ответ дан 2 December 2019 в 18:22
поделиться

Ну, прежде всего что Вы пытаетесь выполнить? Вы - верные фрагменты, решение?

Фрагменты являются просто дополнениями к существующему плагину. Нет никакого Активатора Пакета для "запущения" фрагмента. Вы просто получаете дополнительные ресурсы во фрагменте. Вы могли использовать точку расширения, чтобы сообщить хосту, что некоторая особая функциональность была расширена существующим фрагментом. Думайте о нем как о слиянии двух во времени выполнения.

См. это примечание от Wiki Eclipse.

3
ответ дан 2 December 2019 в 18:22
поделиться

Я думаю, что Вы пытаетесь сделать, лучше подается при помощи точек расширения и отдельных плагинов, поскольку Вы хотите добавить функциональность к основному плагину.

Фрагменты только используются для добавления ресурсов или дополнительных классов к основному плагину.

0
ответ дан 2 December 2019 в 18:22
поделиться

Я не уверен, можно ли сделать это без плагина хоста знание чего-то о загрузке дополнительного кода реализации фрагмента.

Например:

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 является интерфейсом, определенным в плагине хоста и реализованным Вашим фрагментом.

Иначе мог бы быть должен иметь фрагмент, обеспечивают точку расширения, определяющую расширенный класс, но это - вероятно, больше, чем необходимо.

0
ответ дан 2 December 2019 в 18:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: