Зубочистка не вводит зависимости в внедренный экземпляр - PullRequest
0 голосов
/ 23 января 2019

Я создал 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 становятся внедренными.

так должно быть?

1 Ответ

0 голосов
/ 26 января 2019

В вашем примере Зубочистка не создает экземпляр, вы создаете экземпляр и связываете его.

Чтобы зубочистка создала экземпляр, вам необходимо привязаться к целевому классу реализации и предоставить конструктор внедрения.

...