第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Dagger 2 無法進(jìn)行構(gòu)造函數(shù)注入

Dagger 2 無法進(jìn)行構(gòu)造函數(shù)注入

ibeautiful 2021-09-29 15:16:08
我有一個(gè)應(yīng)用程序,其中包含通過 dagger 2 注入的依賴項(xiàng)的活動(dòng)和片段,我能夠在活動(dòng)和片段中進(jìn)行字段注入,但無法在其他類中進(jìn)行構(gòu)造函數(shù)注入。這是我的相關(guān)代碼@Modulepublic abstract class MainFragmentProvider {  @ContributesAndroidInjector(modules = HomeFragmentModule.class)  abstract HomeFragment provideHomeFragmentFactory();}和@Modulepublic class HomeFragmentModule {...@Provides static HomePresenter provideHomePresenter(HomeView homeView, HomeInteractor homeInteractor) {    return new HomePresenter(homeView, homeInteractor); }如何編寫代碼以便我可以通過構(gòu)造函數(shù)注入直接在 HomePresenter 中獲取依賴項(xiàng),而不是在模塊中編寫 provideMethods。我這樣做是因?yàn)槊看挝蚁朐谶@種情況下更改構(gòu)造函數(shù)參數(shù)時(shí),我也需要更改模塊代碼。我怎樣才能在 HomePresenter 的構(gòu)造函數(shù)中做這樣的事情?@Injectpublic HomePresenter(HomeView homeView, HomeInteractor homeInteractor) {    this.homeInteractor = homeInteractor;    this.homeView = homeView;}
查看完整描述

2 回答

?
慕娘9325324

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊

要注入構(gòu)造函數(shù),Dagger 必須知道從哪里獲取傳遞給它的參數(shù),即您必須提供 HomeView homeView, HomeInteractor homeInteractor


因此,還要?jiǎng)?chuàng)建用于提供其他依賴項(xiàng)的方法:


@Provides

 static HomeView provideHomeView() {

    return ...

 }


@Provides

 static HomeInteractor provideHomeInteractor() {

    return ...

 }


查看完整回答
反對(duì) 回復(fù) 2021-09-29
?
幕布斯6054654

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊

我對(duì) dagger 2 的 android 擴(kuò)展了解不多,但據(jù)我所知,有兩種方法可以實(shí)現(xiàn)您正在尋找的結(jié)果。


在相關(guān)組件中,您可以使用您的類型指定一個(gè)方法:


interface SomeComponent {

  HomePresenter presenter(); // Method name does not matter here, only the type

}

并像這樣訪問它


class Home {

  HomePresenter presenter;


  void initialize() { //This could be your onCreate or wherever you typically inject

    presenter = getSomeComponent().presenter();

  }

}

或者,如果您為 Home 對(duì)象指定了一個(gè)注入方法,則可以請(qǐng)求它:


interface SomeComponent {

  void inject(Home home);

}


class Home {

  @Inject HomePresenter presenter;


  void initialize(){

    getSomeComponent().inject(this);

  }

}

在這兩種情況下,您都必須確保Component包含適當(dāng)?shù)腗odules。


查看完整回答
反對(duì) 回復(fù) 2021-09-29
  • 2 回答
  • 0 關(guān)注
  • 191 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)