Как внедрить экземпляр Context в конвертер типов? - PullRequest
0 голосов
/ 03 мая 2018

У меня есть конвертер типа:

class DateConverter {
    Context mContext;

    public DateConverter(Context context) {
        mContext = context;
    }

    @TypeConverter
    public Foobar toFoobar(String str) {
        return App.get(mContext).getComponent()
                .getFoobarManager().convert(str);
    }
}

Проблема для меня в том, что я понятия не имею, чтобы внедрить контекст в экземпляр DateConverter.

PS: В проекте используется dagger2, поэтому я предпочитаю внедрять вместо ссылки на статический экземпляр Context.

Заранее спасибо!

1 Ответ

0 голосов
/ 03 мая 2018

Измените ваш конструктор на public DateConverter() в качестве контекста, который мы добавим через dagger2.

Если вы использовали dagger2 в своем проекте, то должен быть какой-либо класс компонентов. Компонент - это, по сути, интерфейс приложения, который позволяет вводить представления через кинжал Должно быть несколько методов с именем inject() с разными параметрами, например

    public abstract void inject(MainActivity activity);
    public abstract void inject(DaggerApplication daggerApplication);

создайте там свой собственный метод для DateConverter

public abstract void inject(DateConverter dateconverter);

Теперь добавьте, используйте этот метод ввода в вашем DateConverter, как вы использовали его в других классах. Также определите ниже код в вашем DateConverter

    @Inject
    Context context;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...