2015-10-20 4 views
1

Как вы определяете зависимости к вашим представлениям (android.view.View)? Большинство примеров, которые я видел в кинжале, предоставляют им контекст представления, но это не кажется очень сложным. Скажем, если у меня есть двухпанельное представление, я бы хотел, чтобы охватывающий вид обеспечивал зависимости от основных и подробных представлений. Если использовать контекст из вложенных представлений, функции будут по-прежнему предоставляться действием, а не закрывающим представлением. Одним из решений было бы обернуть контекст, переданный в вложенное представление, но это затруднит инфляцию. Это не вопрос кинжала.Просмотреть зависимость впрыска

+0

Что такое вариант использования, в котором вы хотите что-то ввести в представление, а затем передать эту зависимость для дочернего представления, а не вводить зависимость непосредственно в дочерний режим? – FriendlyMikhail

+0

Вид действует на его родителя в некотором роде. Если обратный вызов передается через Контекст, он будет действовать на активность (кроме ContextWrapper). Передача обратных вызовов с помощью метода не такая забавная (нет окончательной) – DariusL

+0

Хотите вставить DI в пользовательское представление (например, CustomTextView расширяет TextView), куда я должен называть инъекцию? –

ответ

0

Если я правильно понял вас, вы хотите передать некоторую зависимость к своему виду. Насколько я знаю, вы можете вводить зависимости так же, как в Activity. С помощью Dagger 2 вы можете определить компонент, модуль, интерфейс и использовать аннотацию @Inject. Он должен работать. На самом деле я не использовал инъекции в представлениях. Обычно я использую их в действиях и просто передаю представление (например, String, Integer, List of objects, custom object и т. Д.). Я думаю, что взгляды должны быть как можно более простыми, и я не уверен, что использование инъекций внутри них является правильным. Возможно, это может быть правильным в очень конкретном решении.

+0

Я понимаю, как вводить инъекцию, я спрашиваю, есть ли способ для включения представления для зависимостей для вложенного представления. – DariusL

+0

Я думаю, самый простой способ узнать это попробовать. Я не знаю, можете ли вы передавать инъекции из закрывающего представления во вложенное представление, но вы можете попытаться инициализировать инъекции во вложенном представлении. При желании вы можете инициализировать инъекции в общем объекте, который может использоваться приложением и вложенным представлением. Может быть, было бы неплохо спросить этот вопрос через вопрос о GitHub, поэтому поддерживающие кинжалы могут дать вам лучший ответ. –

0

Вы можете просто сделать слепой обход дерева просмотра, спросив каждого родителя, если он имеет инжектор, который он должен использовать.

В качестве альтернативы, вы можете иметь закрывающий вид, отвечающий за инъекции, вместо того, чтобы вложенные представления пытались внедрить себя. В конце концов, хотя в примерах руководства для кинжалов показаны объекты, инъецирующие себя, инъекция зависимостей в общем случае должна быть наоборот: что-то еще вводит в нас.

Смежные вопросы