Пытался добавить Dagger2. Однако я не могу понять эту ошибку компиляции: MainActivityModule must be set, которая возникает в моем MainActivity. Если кто-то попытается пролить свет на эту ошибку. Я был бы очень рад.
Моя основная деятельность
public class MainActivity extends BaseActivity {
@Inject
JsonMethods mJsonMethods;
...
in OnCreate
Weather.getComponent().injectMainActivity(this);
Мой класс погоды
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 возврат Retrofit, Gson, OkHttpClient
В этом коде появляется ошибка MainActivityModule must be set:
sWeatherComponent = DaggerWeatherComponent.builder()
.contextModule(new ContextModule(this))
.build();
Вы должны создать экземпляр MainActivityModule, как вы создали экземпляр ContextModule. Ваш MainActivityModule не имеет конструктора по умолчанию, поэтому Dagger не может создать экземпляр MainActivityModule. Итак, создайте экземпляр MainActivityModule и установите его на график Dagger.
sWeatherComponent = DaggerWeatherComponent.builder()
.contextModule(new ContextModule(this))
.mainActivityModule(new MainActivityModule(....))
.build();
Если модули не имеют конструктора, определенного пользователем, Dagger при необходимости автоматически создаст экземпляр через конструктор по умолчанию.
Добро пожаловать :) :) :)
Большое спасибо. Спаси мой день))