Я создал Activity, ViewModel, Модули для зубочистки и Authenticator.
@Singleton
public class GetSmsViewModel {
@Inject Application app;
@Inject Authenticator authenticator;
...
}
public class GetSmsActivity extends AppCompatActivity {
private Scope appScope;
@Inject GetSmsViewModel mGetSmsViewModel;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
appScope = Toothpick.openScope(getApplication());
appScope.installModules(new DIModule(getApplication()), new DataModule());
super.onCreate(savedInstanceState);
Toothpick.inject(this, appScope);
...
}
}
public class DIModule extends Module {
public MagicDeliveryMainModule(Application application) {
bind(GetSmsViewModel.class).toInstance(new GetSmsViewModel());
bind(Application.class).toInstance(application);
bind(Authenticator.class).toInstance(new Authenticator());
}
}
В документации к Зубочистке написано: «Если Зубочистка создает экземпляр, он всегда вводит свои зависимости». , но после Toothpick.inject (это, appScope);
mGetSmsViewModel.app == null и mGetSmsViewModel.authenticator == null. И после
Toothpick.inject (mGetSmsViewModel, appScope);
поля app и authenticator становятся внедренными.
так должно быть?