2017-06-15 160 views
1

面臨的問題我寫的代碼下面的代碼編譯沒有錯誤,但是當我嘗試運行,我得到異常DaggerAppComponent沒有找到與科特林匕首2

AppModule.kt

@Module 
class AppModule private constructor() { 

@Provides 
fun providesDispatcher(): Dispatcher { 
    return Dispatcher(providesBus()) 
} 

@Provides 
fun providesUserActionCreator(): PnrUserActionCreator { 
    return PnrUserActionCreator(providesDispatcher()) 
} 
@Provides 
fun providesBus(): Bus { 
    return sBus 
} 

companion object { 

    private val sBus = Bus() 
    private var sAppModule: AppModule? = null 

    /** 
    * Gets the app module instance 

    * @return AppModule instance 
    */ 
    val instance: AppModule 
     get() { 
      if (sAppModule == null) { 
       sAppModule = AppModule() 
      } 
      return sAppModule !! 
     } 
} 

AppComponent.kt

@Component(
    modules = arrayOf(AppModule::class) 
) 
interface AppComponent { 

fun inject(mainActivity: MainActivity) 
} 

MainActivity .kt

class MainActivity : AppCompatActivity() { 
@Inject lateinit var mPnrUserActionCreator: PnrUserActionCreator 
@Inject lateinit var mEventBus: Bus 
override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState) 
    setContentView(R.layout.activity_main_screen) 
    DaggerAppComponent.builder().appModule(AppModule.instance) 
      .build().inject(this) 
} 
} 

爲的build.gradle文件匕首依賴

kapt { 
    generateStubs = true 
    } 
// Dagger 2 
compile 'com.google.dagger:dagger:2.4' 
kapt 'com.google.dagger:dagger-compiler:2.4' 
provided 'org.glassfish:javax.annotation:10.0-b28' 

有人能告訴我在做什麼錯了,我應該怎麼做,使之正確嗎?

+3

你會得到什麼錯誤? – azizbekian

回答

0

DaggerAppComponent()是生成的類。你需要爲Dagger「清理和構建」這個項目來生成這個類。

+0

我已經清理並重建了該項目。它正在編譯,但運行時給出了錯誤 – Silky

+0

@Silky檢查是否有幫助:https://stackoverflow.com/a/43670496/2686502 – jayeshsolanki93

+0

謝謝,我忘了寫適用插件:'kotlin-kapt' – Silky