В моем приложении я использую Dagger
, и некоторые действия используют это, и я хочу реализовать эту инъекцию на BaseActivity
вместо внедрения инъекции на все действия, которые я хочу использовать Dagger
, например:
это мой LoginActivity:
class LoginActivity : AppCompatActivity(){
@Inject
internal lateinit var personsRemoteRepository: PersonsRemoteRepository
@Inject
internal var restClient: RestClient? = null
private var component: ApplicationComponent? = null
private var mBinding: LoginActivityBinding? = null
private var viewModel: LoginMethodsViewModel? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
component = DaggerApplicationComponent.builder()
.projectApplicationComponent(CoreApplication.getComponent())
.build()
component?.inject(this)
mBinding = DataBindingUtil.setContentView(this, R.layout.login_activity)
personsRemoteRepository = PersonsRemoteRepository(restClient)
viewModel = LoginMethodsViewModel(personsRemoteRepository, this, mBinding)
mBinding!!.viewModel = viewModel
}
}
в этом упражнении я использую DaggerApplicationComponent
для инъекции, теперь я хочу иметь BaseActivity
, такой как этот класс:
open class BaseActivity : AppCompatActivity() {
protected var component: ApplicationComponent? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
component = DaggerApplicationComponent.builder()
.projectApplicationComponent(CoreApplication.getComponent())
.build()
component?.inject(this)
}
}
и когда я расширяю этот класс вместо AppCompatActivity
на LoginActivity
, я могу использовать инъекцию, например:
class LoginActivity : BaseActivity (){
@Inject
internal lateinit var personsRemoteRepository: PersonsRemoteRepository
@Inject
internal var restClient: RestClient? = null
private var component: ApplicationComponent? = null
private var mBinding: LoginActivityBinding? = null
private var viewModel: LoginMethodsViewModel? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBinding = DataBindingUtil.setContentView(this, R.layout.login_activity)
personsRemoteRepository = PersonsRemoteRepository(restClient)
viewModel = LoginMethodsViewModel(personsRemoteRepository, this, mBinding)
mBinding!!.viewModel = viewModel
}
}