我相信我应该注入一切。 (所以我们也可以讨论) 我使用了recycleview并添加了dividerItemDecoration或LinearLayoutManager
所以在我的ActivityModule.java
public class ActivityModule {
private AppCompatActivity mActivity;
public ActivityModule(AppCompatActivity activity) {
this.mActivity = activity;
}
@Provides
DividerItemDecoration provideDividerItemDecoration() {
return new DividerItemDecoration(mActivity, DividerItemDecoration.VERTICAL);
}}
我像这样提供我的DividerItemDecoration。
然后在我的片段上注入
@Inject
DividerItemDecoration itemDecorator;
并像这样使用它:
itemDecorator.setDrawable(Objects.requireNonNull(getDrawable(getBaseActivity(), R.drawable.language_separator)));
可以放个片段。
问题:
下一次我可以在另一个片段中使用DividerItemDecoration作为Horizontal ..而无法再次提供DividerItemDecoration。
我想创建一般方法或其他方法。例如,我将注入片段
@Inject
DividerItemDecoration itemDecorator(horizontal???).. ?
我不知道它的语法和逻辑。
如何提供和注入这种代码?
等待您的支持。
它也是一个本机视图的东西,也许它不需要注入..请告诉您的意见..我提醒您,我仍然需要一个示例并学习注入和提供的那种方法。.>
非常感谢
答案 0 :(得分:0)
我想分享一个有关依赖注入的文字,它使我们可以使用依赖注入改变主意:
请勿(始终)使用DI:注射剂与新药
在学习DI时对我非常有用的东西 框架是意识到使用DI框架并不意味着 您必须DI来初始化所有对象。作为一个规则 thumb:注入在编译时知道并且具有的对象 与其他物体的静态关系;不要注入运行时信息。
我认为这是关于该主题的好帖子。介绍概念 “新产品”和“可注射产品”。
可注入对象是DI图根附近的类。执行个体 这些类中的一种是您期望DI的对象 提供和注入的框架。管理器或服务类型的对象是 注射剂的典型例子。新事物是边缘的对象 DI图的一部分,或者甚至不真正属于DI图的一部分 所有。整数,地址等是可更新商品的示例。从广义上讲, 新产品是被动对象,没有必要注入或注入 嘲笑他们。它们通常包含您中的“数据” 应用程序,并且仅在运行时可用(例如您的地址)。 新产品不应保留对注射剂的引用,反之亦然 (该帖子的作者将其称为 “可注射/可分离”。
实际上,我发现,并非总是容易或可能的 明确区分注射剂和新药。不过我 认为它们是很好的概念,可用于您的思考 处理。在添加另一个工厂之前一定要三思 您的项目!
我们决定删除ArrayList,LinearLayoutManager,DividerItemDecoration的注入。我们创建的类没有“新”注入
答案 1 :(得分:0)
我们可以使用@Named注入相同的类
@Provides
@Named(CMS.Client.DELIVERY_API_CLIENT)
fun provideCMSClient(): CDAClient {
return CDAClient.builder()
.setSpace("4454")
.setToken("777")
.build()
}
@Provides
@Named(CMS.Client.SYNC_API_CLIENT)
fun provideCMSSyncClient(): CDAClient {
return CDAClient.builder()
.setSpace("1234")
.setToken("456"))
.build()
}