Skip to content

Instantly share code, notes, and snippets.

View tompee26's full-sized avatar
🎯
Kotlin-ing

Tompee Balauag tompee26

🎯
Kotlin-ing
View GitHub Profile
@tompee26
tompee26 / MainActivityModule.kt
Created December 5, 2018 04:40
MainActivityModule.kt
@Module(includes = [MainActivityModule.FragmentBindings::class])
class MainActivityModule {
@Module
interface FragmentBindings {
@ContributesAndroidInjector(modules = [MainFragmentModule::class])
fun bindMainFragment() : MainFragment
}
@Provides
@MainActivityScope
@tompee26
tompee26 / MainFragment.kt
Last active December 5, 2018 04:23
MainFragment.kt
class MainFragment : Fragment() {
@Inject
lateinit var hero : Hero
override fun onAttach(context: Context?) {
AndroidSupportInjection.inject(this)
super.onAttach(context)
Log.d("InjectionTest", hero.name)
}
@tompee26
tompee26 / ActivityModule.kt
Created December 5, 2018 04:09
ActivityModule.kt
@Module
class MainActivityModule {
@Provides
@MainActivityScope
fun provideWarrior(): Warrior = Warrior("Hercules", "Sword")
@Provides
@MainActivityScope
fun provideActivity(mainActivity: MainActivity) : MainActivity = mainActivity
@tompee26
tompee26 / ActivityModule.kt
Created December 5, 2018 03:58
ActivityModule.kt
@Module()
abstract class ActivityModule {
@MainActivityScope
@ContributesAndroidInjector(modules = [MainActivityModule::class])
abstract fun bindMainActivity(): MainActivity
}
@tompee26
tompee26 / AppComponentWithActivityModule.kt
Created December 5, 2018 02:57
AppComponentWithActivityModule.kt
@Singleton
@Component(
modules = [
AndroidSupportInjectionModule::class,
ActivityModule::class
]
)
interface AppComponent {
@Component.Builder
@tompee26
tompee26 / ActivityModule.kt
Created December 5, 2018 02:50
ActivityModule.kt
@Module(subcomponents = [MainActivitySubcomponent::class])
abstract class ActivityModule {
@Binds
@IntoMap
@ClassKey(MainActivity::class)
abstract fun bindMainActivityInjectorFactory(builder: MainActivitySubcomponent.Builder): AndroidInjector.Factory<*>
}
@tompee26
tompee26 / MainActivitySubcomponent.kt
Created December 5, 2018 02:46
MainActivitySubcomponent.kt
@MainActivityScope
@Subcomponent(modules = [MainActivityModule::class])
interface MainActivitySubcomponent : AndroidInjector<MainActivity> {
@Subcomponent.Builder
abstract class Builder : AndroidInjector.Builder<MainActivity>()
}
@tompee26
tompee26 / MainActivityModule.kt
Created December 5, 2018 02:38
MainActivityModule.kt
@Module
class MainActivityModule {
@Provides
@MainActivityScope
fun provideWarrior(): Warrior = Warrior("Hercules", "Sword")
}
@tompee26
tompee26 / MainActivity.kt
Created December 5, 2018 02:20
MainActivity.kt
class MainActivity : AppCompatActivity() {
@Inject
lateinit var warrior: Warrior
override fun onCreate(savedInstanceState: Bundle?) {
AndroidInjection.inject(this)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
@tompee26
tompee26 / Warrior.kt
Created December 5, 2018 02:17
Warrior.kt
data class Warrior(val name: String, val weapon: String)