Мне удалось заставить это работать с небольшим изменением кода guice (переопределено в моем локальном классе, который расширяет AbstractPresenterModule:
@Override
protected <D extends Display> void bindDisplay(Class<D> display, Class<? extends D> displayImpl)
{
bind(display).to(displayImpl).in(Singleton.class);
}
Метод bindPresenter (), который я использовал, связывает докладчикакак singleton, и вызывает bindDisplay (), чтобы связать интерфейс дисплея с его реализацией, но последний не является одноэлементной привязкой, поэтому я столкнулся с разными экземплярами (один связан с презентатором, другой связан с содержащим классом дисплея).
Переопределение метода bindDisplay () для привязки дисплея к одиночному гарантирует, что реализация дисплея, внедренная в другой дисплей, является тем же экземпляром, к которому привязан докладчик.