При попытке использовать DI Toothpick во фрагменте появляется странная ошибка:
toothpick.registries.NoFactoryFoundException: не удалось найти фабрику для класса android.app.Application. Убедитесь, что класс имеет аннотированный конструктор @Inject или содержит аннотированные элементы @Inject. При использовании реестров убедитесь, что они правильно настроены с аргументами процессора аннотаций.
Мой фрагмент:
public class ApplicationMenu extends SidebarFragment {
@Inject ApplicationsService applicationsService;
@Inject SectionsService sectionsService;
private EventBus bus = EventBus.getDefault();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Toothpick.inject(this, Toothpick.openScope(LauncherActivity.class)); // <- Erroring here
}
...
}
Активность:
public class LauncherActivity extends SidebarActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
Scope scope = Toothpick.openScopes(LauncherApplication.class, LauncherActivity.class);
scope.bindScopeAnnotation(LauncherActivitySingleton.class);
scope.installModules(new LauncherActivityModule(this));
super.onCreate(savedInstanceState);
Toothpick.inject(this, scope);
setContentView(R.layout.activity_launcher);
ButterKnife.bind(this);
...
}
...
}
Странно, я получаю ошибку только во фрагментах, все инъекции в других местах (ViewRenderers, Адаптеры, Сервисы и т. Д.) Работают без проблем