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

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

如何在Android Studio的Java庫(kù)模塊中使用Dagger?

如何在Android Studio的Java庫(kù)模塊中使用Dagger?

胡說(shuō)叔叔 2023-11-10 16:22:40
我在 Android Studio 項(xiàng)目的 Java 庫(kù)模塊中使用 Dagger,該build.gradle模塊的外觀如下:apply plugin: 'java-library'dependencies {    implementation fileTree(dir: 'libs', include: ['*.jar'])    implementation 'com.google.dagger:dagger:2.24'    annotationProcessor 'com.google.dagger:dagger-compiler:2.24'}sourceCompatibility = "7"targetCompatibility = "7"我可以看到 Dagger 正在正確生成實(shí)現(xiàn),并且它們存在于build/generated/sources/annotationProcessor但由于某種原因我無(wú)法在代碼中訪(fǎng)問(wèn)它們。package此外,生成的文件在語(yǔ)句中顯示錯(cuò)誤:包名稱(chēng)“com.example.javamodule”與文件路徑“java.main.com.example.javamodule”不對(duì)應(yīng)我在這里有兩個(gè)問(wèn)題。首先,如何在 java 模塊代碼中訪(fǎng)問(wèn) Dagger 生成的類(lèi),其次,如何從生成的類(lèi)中刪除上述錯(cuò)誤?
查看完整描述

1 回答

?
慕哥6287543

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

在您的 java 庫(kù)的 gradle 文件中:


plugins {

    id 'java-library'

    id 'kotlin'

    id 'kotlin-kapt'

}


java {

    sourceCompatibility = JavaVersion.VERSION_1_7

    targetCompatibility = JavaVersion.VERSION_1_7

}


dependencies {

    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"


    //Dependency injection

    implementation 'com.google.dagger:dagger:2.27'

    kapt 'com.google.dagger:dagger-compiler:2.24'

}

然后創(chuàng)建一個(gè)類(lèi)及其依賴(lài)項(xiàng):


class First

@Inject

constructor(

    private val second: Second,

    private val third: Third

) {

    fun firstFunction() {

        print(second.secondMessage())

        print(third.name)

    }

}


class Second(

    private val name: String

) {

    fun secondMessage(): String {

        return name

    }

}


class Third(

    val name: String

)

然后創(chuàng)建你的匕首模塊:


@Module

class ModuleUtil {


    @Provides

    fun providesSecond(): Second {

        return Second("second")

    }


    @Provides

    fun providesThird(): Third {

        return Third("third")

    }


}

然后創(chuàng)建你的匕首組件:


@Singleton

@Component(modules = [

    ModuleUtil::class

])

interface MainComponent {


    fun maker(): First


}

處理生成組件的對(duì)象:


object DaggerWrapper {


    lateinit var mainComponent: MainComponent


    fun initComponent() {

        mainComponent = DaggerMainComponent

            .builder()

            .build()

    }


}

最后在你的應(yīng)用程序 android 模塊中(例如,在 Activity 中):


DaggerWrapper.initComponent()

            val mainComponent = DaggerWrapper.mainComponent

            val first = mainComponent.maker()

            first.firstFunction()


查看完整回答
反對(duì) 回復(fù) 2023-11-10
  • 1 回答
  • 0 關(guān)注
  • 176 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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