Решение, которое я придумал, заключается в реализации различных случаев Activity / Fragment с параметрами типа и внесении реализаций.Для вашего случая это будет примерно так:
public abstract class MyActivity<T extends AbstractDescriptionItem> extends BaseActivity[...]
Допустим, у вас есть BookDescriptionItem
класс, расширяющий AbstractDescriptionItem
:
public class BookDescriptionActivity extends MyActivity<BookDescriptionItem>
Наконец, добавьте реализации:
@ContributesAndroidInjector
abstract BookDescriptionActivity contributeBookDescriptionActivity();