I was trying to add Dagger2. However, I am not able to figure out this compilation error: MainActivityModule must be set
which happens in my MainActivity
. If someone will try to throw some light on this error. I would really be glad.
My MainActivity
public class MainActivity extends BaseActivity {
@Inject
JsonMethods mJsonMethods;
...
in OnCreate
Weather.getComponent().injectMainActivity(this);
My Weather class
public class Weather extends Application {
private static WeatherComponent sWeatherComponent;
@Override
public void onCreate() {
super.onCreate();
sWeatherComponent = DaggerWeatherComponent.builder()
.contextModule(new ContextModule(this))
.build();
}
public static WeatherComponent getComponent() {
return sWeatherComponent;
}
}
WeatherComponent
@Component(modules = MainActivityModule.class)
public interface WeatherComponent {
void injectMainActivity(MainActivity mainActivity);
}
MainAcitivtyModule
@Module(includes = NetworkModule.class)
public class MainActivityModule {
private final MainActivity mainActivity;
public MainActivityModule(MainActivity mainActivity) {
this.mainActivity = mainActivity;
}
@Provides
@WeatherApplicationScope
public JsonMethods provideJsonMethods(Retrofit retrofit) {
return new JsonMethods(mainActivity, retrofit);
}
NetworkModule return Retrofit
, Gson
, OkHttpClient
Error MainActivityModule must be set
appears in this code:
sWeatherComponent = DaggerWeatherComponent.builder()
.contextModule(new ContextModule(this))
.build();