Skip to content

Instantly share code, notes, and snippets.

@juliuscanute
Created October 15, 2019 09:44
Show Gist options
  • Save juliuscanute/a74923d7208342e98b088bd1af794b75 to your computer and use it in GitHub Desktop.
Save juliuscanute/a74923d7208342e98b088bd1af794b75 to your computer and use it in GitHub Desktop.
[ContributeAndroidInjector] #dagger #subcomponent #activityscope
import dagger.Module
// required imports
@Module
class ActivityBuilderModule{
@ActivityScope
@ContributeAndoridInjector(modules = [ActivityModule::class])
fun bindFeatureActivity(): FeatureActivity
}
import dagger.Module
import dagger.Provides
@Module(include = [FragmentBuilderModule::class]
class ActivityModule {
@Provides
fun providePresenter(): FeatureActivityPresenter = FeatureActivityPresenter()
@ActivityScope
@Provides
fun provideFoo(): Foo = Foo()
}
@Component(modules = [ActivityBuilderModule::class)
public interface AppComponent{
fun inject(application: Application);
}
import android.app.Activity
import android.os.Bundle
import javax.inject.Inject
class FeatureActivity : Activity() {
@Inject
lateinit var featureActivityPresenter: FeatureActivityPresenter
override fun onCreate(savedInstanceState: Bundle?) {
AndroidInjection.inject(this)
super.onCreate(savedInstanceState)
}
}
import android.app.Fragment
import android.content.Context
import javax.inject.Inject
class FeatureFragment : Fragment() {
@Inject
lateinit var featureFragmentPresenter: FeatureFragmentPresenter
override fun onAttach(context: Context?) {
AndroidSupportInjection.inject(this)
super.onAttach(context)
}
}
import dagger.Module
// required imports
@Module
class FragmentBuilderModule {
@FragmentScope
@ContributeAndoridInjector(modules = [FragmentModule::class])
fun bindFeatureFragment(): FeatureFragment
}
import dagger.Module
import dagger.Provides
@Module
class FragmentModule {
@FragmentScope
@Provides
fun providePresenter(foo: Foo, bar: Bar):
FeatureFragmentPresenter = FeatureFragmentPresenter(foo)
@Provides
fun provideBar(): Bar = Bar()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment