Stack Overflow на русском Asked by Rkz on August 30, 2021
Начал изучать Dagger2 и пытаюсь создать зависимости с Room.
Это компонент AppComponent.
@Component(dependencies = {}, modules = {DataBaseModule.class})
public interface AppComponent {
void inject(MainActivity activity);
}
Это модуль,где я получаю контекст,создаю бд, и предоставляю "сущности".
public class DataBaseModule {
private Context context;;
@Inject
public DataBaseModule(Context context) {
this.context = context;
}
@Singleton
@Provides
public AppDataBase getDataBase() {
return Room.databaseBuilder(context
, AppDataBase.class, "database")
.build();
}
@Singleton
@Provides
public CategoryDao getCategoryDao(AppDataBase db) {
return db.categoryDao();
}
@Singleton
@Provides
public ExpensesDao getExpensesDao(AppDataBase db) {
return db.spendingDao();
}
@Singleton
@Provides
public FinPlanDao getFinPlanDao(AppDataBase db) {
return db.finPlanDao();
}
}
Класс App где я собираю компонент.Он указан в манифесте.
public class App extends Application {
private static AppComponent mApplicationComponent;
@Override
public void onCreate() {
super.onCreate();
mApplicationComponent = DaggerAppComponent.builder().dataBaseModule(new DataBaseModule(this)).build();
}
public static AppComponent getComponent() {
return mApplicationComponent;
}
}
И activity, где я бы хотел получить модуль
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Inject
DataBaseModule dataBaseModule;
@Override
protected void onCreate(Bundle savedInstanceState) {
App.getComponent().inject(this);
}
При сборке падает ошибка:
error: android.content.Context cannot be provided without an @Provides-annotated method.
void inject(MainActivity activity);
Не могли бы вы объяснить подробно, что я делаю не правильно и как быть с контекстом.
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP