2010-04-08 9 views
6

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

ответ

8

Проблема не в том, что содержимое фрагмента не видно другому плагину: они - просто попробуйте загрузить, например. файл свойств из пути к классам, он по-прежнему работает, если этот файл свойств предоставляется фрагментом.

Но у вас нет информации о времени фрагментации фрагмента. Это принцип фрагмента: у вас нет зависимости от него. И вы не знаете, если у кого-то есть фрагменты, установленные или нет.

Это также не только проблема, которая имеет только «любой плагин, помимо подключаемого модуля». Это проблема, что даже сам хост-плагин. Он не знает о существовании фрагмента во время компиляции.

Вы также не можете надежно использовать фрагмент для переопределения частей классов подключаемого модуля хоста: FAQ Can fragments be used to patch a plug-in?, если это то, что вы хотите сделать. На странице также описывается, как это можно сделать.

Надеюсь, это поможет.

+0

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