我试图找到一个解决方案,在如何定义在某个片段相关的场景中的刀柄。我有以下设置:
- 活动
- 亲本片段1
- 子片段1
- 子片段2
- ...
- 子片段n-1
- 亲本片段2
- 子片段1
- 子片段2
- ...
- 子片段n-1
父片段1正在使用依赖项A。该依赖项的示例是我只想在该父片段和它的所有子片段之间共享的东西。父片段2 +其子片段应该使用与父片段1 +子片段不同的示例。通常,他的结构应该只有任何给定依赖项的两个示例-一个用于第一流,一个用于第二流。
我可以看到一个自定义范围可能在这里工作,但我不确定如何使用有关的刀柄。
我试图找到一个解决方案,在如何定义在某个片段相关的场景中的刀柄。我有以下设置:
父片段1正在使用依赖项A。该依赖项的示例是我只想在该父片段和它的所有子片段之间共享的东西。父片段2 +其子片段应该使用与父片段1 +子片段不同的示例。通常,他的结构应该只有任何给定依赖项的两个示例-一个用于第一流,一个用于第二流。
我可以看到一个自定义范围可能在这里工作,但我不确定如何使用有关的刀柄。
2条答案
按热度按时间91zkwejq1#
实现目标的一种方法是利用Hilt的默认绑定(在本例中为
Fragment
)和dagger Qualifier注解。在你的第一个父片段中,你有你的片段作用域和限定绑定,比如
而在
ChildFragment1
中,Binding
是不合格的,我们将提供一种方法,让dagger根据传递给fragment bundle的fragment参数注入适当的绑定在dagger模块中,您可以根据我们在
ChildFragment1
创建过程中传递给bundle的参数,指定为ChildFragment1
提供哪种合格出价。kadbb4592#
您可以使用dagger-hilt在每个父Fragment和其子视图中添加
@AndroidEntryPoint
来实现这一点。然后您的Parent Fragment 1
和Parent Fragment 2
将具有不同的fragment作用域和不同的示例,如dagger-hilt所述。请参见dagger-hilt的以下注解:一个常见的误解是所有片段示例将共享@FragmentScoped范围内的绑定的同一个示例。然而,这不是真的。每个片段示例获得片段组件的一个新示例,从而获得其所有范围内绑定的一个新示例。
另请参见下文的匕首图和内窥镜层次结构:
更多详细信息,请参阅documentation。
此外,除非确实需要,否则不要使用自定义作用域,因为它会带来性能和开销问题。