TransWikia.com

Нужна помощь с Dagger2

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);

Не могли бы вы объяснить подробно, что я делаю не правильно и как быть с контекстом.

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP