2017-05-30 89 views
2

我正在使用新的dagger.android方法注入活動,但我不知道如果要將Activity注入到課程中該怎麼辦?也許Navigator類需要當前的活動:如何使用dagger.android將活動注入到另一個類中?

package com.abydos.messenger.ui 

import android.app.Activity 
import com.abydos.messenger.ui.register.RegisterActivity 
import org.jetbrains.anko.startActivity 
import javax.inject.Inject 

class Navigator @Inject constructor(private val activity: Activity) { 
    fun register() { 
     activity.startActivity<RegisterActivity>() 
    } 

    ... 
} 

而且在ActivityBindingModule.kt

package com.abydos.messenger.di 

import com.abydos.messenger.ui.register.RegisterActivity 
import dagger.Module 
import dagger.android.ContributesAndroidInjector 

@Module 
abstract class ActivityBindingModule { 
    @ContributesAndroidInjector 
    abstract fun contributeRegisterActivity(): RegisterActivity 

    ... 
} 

也許像這樣爲每個活動可能會奏效?

@Binds abstract fun bindActivity(yourActivity: YourActivity): Activity 

但我不喜歡爲所有活動編寫這個想法,有沒有更好的方法?

+0

問題是,你爲什麼要注入的'Activity'到另一個呢? – finki

+0

你有沒有找到答案? – AJay

回答

0

不幸的是,Dagger-android-processor不會自動創建這個綁定。

你需要一個更模塊:

@Module 
interface RegisterModule { 
    @Binds 
    fun bindActivity(activity: RegisterActivity): Activity 
} 

而在你ActivityBindingModule:

@ContributesAndroidInjector(modules = arrayOf(RegisterModule::class)) 
abstract fun contributeRegisterActivity(): RegisterActivity 
相關問題