2016-11-22 11 views
2

を注入していない:ダガー+ Kotlinが、私はDIのためのダガー2を勉強し、私はちょうど改修を注入するために、このコードをした

NetModule.kt

@Module 
class AppModule(val mApplication: Application) { 

    @Provides 
    @Singleton 
    fun provideApplication() : Application{ 
     return mApplication 
    } 
} 

AppModule.kt

@Module 
class AppModule(val mApplication: Application) { 

    @Provides 
    @Singleton 
    fun provideApplication() : Application{ 
     return mApplication 
    } 
} 

NetComponent .kt:

@Singleton 
@Component(modules = arrayOf(AppModule::class, NetModule::class)) 
interface NetComponent { 
    fun inject(activity: Activity) 
} 

CustomApplication.kt私の活動の後

class CustomApplication : Application() { 

    companion object { 
     lateinit var mNetComponent: NetComponent 
    } 

    override fun onCreate() { 
     super.onCreate() 

     AndroidThreeTen.init(this) 

     mNetComponent = DaggerNetComponent.builder() 
          .appModule(AppModule(this)) 
          .netModule(NetModule(getString(R.string.api_base_url))) 
          .build() 

    } 
} 

class TrashCansInfoActivity : AppCompatActivity(){ 

@Inject 
    lateinit var mRetrofit: Retrofit 

override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     setContentView(R.layout.activity_trash_cans_info) 

     CustomApplication.mNetComponent.inject(this) 

     setSupportActionBar(toolbar) 

     populateTrashCanList() 

    } 

    private fun populateTrashCanList(){ 
     showProgress(true) 
     mRetrofit.create(ApiClient::class.java) 
       .getTrashCans() 
       .map { it.map { it.toTrashCan() } } 
       .subscribeOn(Schedulers.newThread()) 
       .observeOn(AndroidSchedulers.mainThread()) 
       .doOnError { 
        showProgress(false) 
        Toast.makeText(this, "Erro ao carregar lista de lixeiras", Toast.LENGTH_SHORT).show() 
       }.doOnCompleted { showProgress(false) } 
       .subscribe(behaviorSubject) 
    } 

} 

だから、このコードは動作するはずです、右?依存関係を追加する必要があります...しかし、私は私のアプリを実行すると...私はこの取得:

kotlin.UninitializedPropertyAccessException: lateinit property mRetrofit has not been initialized 

だから改修が注入されていませんが。私は何が欠けていますか?

何か助けてください!

答えて

11
fun inject(activity: Activity) 

は、それが働いた

fun inject(activity: TrashCansInfoActivity) 
+0

でなければなりません。ありがとう! –

関連する問題