package Ġtp . example Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġtoo th pick . Scope Ċ import Ġtoo th pick . T ooth pick Ċ import Ġtoo th pick . config . Module Ċ import Ġtp . kotlin . R Ċ import Ġtp . kotlin . android x . inject Ċ import Ġtp . kotlin . bind Ċ import Ġtp . kotlin . module Ċ import Ġtp . kotlin . named Ċ import Ġtp . kotlin . provided By Ċ Ċ class ĠCustom Inject Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlate Init Scope : ĠScope ĊĊĠĠĠ Ġ// ĠUses Ġscope Ġfrom Ġbase ĊĠĠĠ Ġprivate Ġval Ġinjected Content : ĠInject Content Interface Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġpic asso : ĠPic asso Ġby Ġinject () ĊĠĠĠ Ġ// ĠUses Ġscope Ġfrom Ġbase Ġwith Ġextended Ġbase Ġmodule ĊĠĠĠ Ġprivate Ġval Ġinject String : ĠString Ġby Ġinject ( name Ġ= Ġ" Inject String ") ĊĊĠĠĠ Ġ// ĠLazy Ġinject Ġwith Ġscope Ġvia Ġlambda Ġto Ġuse Ġlateinit Ġscope ĊĠĠĠ Ġprivate Ġval Ġcustom Class : ĠCustom Class Ġby Ġinject Ġ{ Ġscope Ġ= Ġlate Init Scope Ġ} ĊĊĠĠĠ Ġ// ĠCombine Ġknown Ġand Ġlazy Ġload Ġscope Ġvia Ġlambda Ġto Ġuse Ġlateinit Ġscope ĊĠĠĠ Ġprivate Ġval Ġnamed Custom Class : ĠCustom Class Ġby Ġinject ( name Ġ= Ġ" With Java Class ") Ġ{ Ġscope Ġ= Ġlate Init Scope Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġextend Base Module Ġ= Ġmodule Ġ{ ĊĠĠĠĠĠĠĠ ĠString :: class Ġnamed Ġ" Inject String " Ġprovided By Ġ" Inject ĠMe !" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġscope . install Modules ( extend Base Module ) ĊĠĠĠĠĠĠĠ Ġlate Init Scope Ġ= ĠT ooth pick . open Scopes ( application , Ġthis , Ġ" custom scope "). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstall Modules ( Custom Module ( toString ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠfindViewById < TextView >( R . id . text 1 ). text Ġ= Ġ"${ inject ed Content . content } Ġwith Ġ$ inject String " ĊĠĠĠĠĠĠĠ ĠfindViewById < ImageView >( R . id . image ). setImage Resource ( pic asso . image ) ĊĠĠĠĠĠĠĠ ĠfindViewById < TextView >( R . id . text 2 ). text Ġ= Ġ"${ custom Class . name }\ n ${ named Custom Class . name }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ ĠT ooth pick . close Scope (" custom scope ") ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠCustom Module ( name : ĠString ) Ġ: ĠModule () Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIn fix Ġworks Ġoutside ĠModule ĠDSL ĊĠĠĠĠĠĠĠ Ġbind ( Custom Class :: class ) Ġprovided By ĠCustom Class ( name ) ĊĠĠĠĠĠĠĠ Ġbind ( Custom Class :: class . java ) Ġnamed Ġ" With Java Class " Ġprovided By ĠCustom Class (" Named Ġ$ name ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠCustom Class ( val Ġname : ĠString ) Ċ