简体   繁体   English

如何在 java 中使用 dagger2 注入 MainActivity 上下文?

[英]how do I inject MainActivity context using dagger2 in java?

I am trying to inject the context of the MainActivity into a class I have.我正在尝试将 MainActivity 的上下文注入到我拥有的 class 中。 I looked at this but it doesn't work for me and I get the following error:我看了这个,但它对我不起作用,我收到以下错误:

    /home/muhammadmehdi/ALL_PROJECTS/memex/memex-app/app/src/main/java/com/memex/MainActivity.java:30: error: cannot find symbol
import com.memex.components.DaggerMainActivityComponent;
                           ^
  symbol:   class DaggerMainActivityComponent
  location: package com.memex.component

This is the code that I wrote in the onCreate method of the MainActivity.java file:这是我在 MainActivity.java 文件的 onCreate 方法中编写的代码:

MainActivityComponent mainActivityComponent = DaggerMainActivityComponent.builder()
                .mainActivityModule(new MainActivityModule(MainActivity.this))
                .build();

Finally figured it out:终于想通了:

// modules.java
@Module
public class ContextModules {

    private final Context context;

    public ContextModules(Context context) {
        this.context = context;
    }

    @Provides
    ContextProviderClass contextProvider() {
        return new ContextProviderClass(context);
    }
}

//components.java interface
@Component(modules = ContextModules.class)
public interface Components {
     // put getter for class that needs context
}

// MainActivity.java where you want the object of class
Components components = DaggerComponents.builder()
                .modules(new ModContextModulesules(this))
                .build();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM