【问题标题】:Dagger 2 How to inject one class to multiple components using Sub components?Dagger 2 如何使用子组件将一个类注入多个组件?
【发布时间】:2017-07-19 11:32:43
【问题描述】:

任何人都可以提供示例代码来使用子组件来实现这个场景。 在 MyActivity 中,我需要满足来自多个组件的依赖关系。 正如您在下面的代码中看到的,MyActivity 需要来自 compA via module classAcompB via module classB 的注入。

@Component(modules = classA.class)
interface compA
{
void inject(MyActivity target);
}

@Component(modules = classB.class)
interface compB
{
void inject(MyActivity target);
}

很长一段时间以来,我一直在尝试许多不同的事情。我还阅读了有关子组件的官方文档,但无法理解如何处理我的场景。请帮忙

【问题讨论】:

    标签: android dagger-2 dagger


    【解决方案1】:

    有很多方法可以做到这一点。包含模块就是其中之一。我们必须模块 AndroidModules 和 NetworkModules。

    @Module(includes = AndroidModules.class)
    public class NetworkModules {
    //Here two module are marge ....
    }
    

    现在在我的组件中

    @Component(modules = NetworkModules.class)
    public interface NetworkComponent {
        void inject(MyActivity activity);
    }
    

    【讨论】:

    • 感谢您的回答。如果我想让我的组件或模块独立,有什么办法吗?
    【解决方案2】:

    你可以这样试试,

    @Component(
        modules = {
            ApplicationModule.class,
            MainModule.class
        }
    )
    public interface compA
    {
    void inject(MyActivity target);
    }
    

    【讨论】:

    • 谢谢。以前我试过这个,但这种方法的问题是它会产生紧密耦合。我想让我的组件独立。
    猜你喜欢
    • 1970-01-01
    • 2016-12-01
    • 2016-11-21
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 2021-11-18
    相关资源
    最近更新 更多