рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдбрд╝рд╛рди рднрд░рддреЗ рд╣реИрдВ: рдЬреЗрдЯрдкреИрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдорд▓реНрдЯреА-рдореЙрдбреНрдпреВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди


рд▓рдЧрднрдЧ рд╣рд░ рдмрдврд╝рддреА рд╣реБрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЬрд▓реНрдж рдпрд╛ рдмрд╛рдж рдореЗрдВ рдмрд╣реБрдкрдХреНрд╖реАрдп рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдУрд░ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреА рд╣реИред рдбреЗрд╡рд▓рдкрд░реНрд╕ рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдХреЗрд╡рд▓ рдПрдХ рдлреАрдЪрд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдорд▓реНрдЯреАрдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдмрд┐рд▓реНрдб рдЯрд╛рдЗрдо рдХрдо рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрд▓рдЧрд╛рд╡ рдШрдЯрдХреЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рдкрд░ рдХреБрдЫ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддрд╛ рд╣реИред рдЬрдм рд╣рдо рдЬреЗрдЯрдкреИрдХ рд╕реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдл рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреИрдХреЗрдЬ рд╕реЗ рд╕реБрд▓рдн рд╣реЛрддрд╛ рд╣реИ, рд╣рдо рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдирд╡рд╛рдХреЛрдЯреНрд░реЙрд▓рд░ рдХреЛ рдХреМрди рд╕реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдиреЗрд╕реНрдЯреЗрдб рдЯреБрдХрдбрд╝реЗ рд╣реЛрдиреЗ рдкрд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реЛрд╕реНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдмрд╣реБрдд рд╕рд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ: рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдл рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд╣рд╛рдВ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕реЗ рдХреИрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХреИрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рд╣реИред рд╣рдо рдХрдЯ рдХреЗ рддрд╣рдд рдЗрд╕ рд╕рдм рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред


рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдл


рдорд▓реНрдЯреА-рдореЙрдбреНрдпреВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рддреЗ рд╕рдордп рдпрд╛рдж рд░рдЦрдиреЗ рд╡рд╛рд▓реА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдирд┐рд░реНрднрд░рддрд╛ рдкреЗрдбрд╝ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдПрдХ рджрд┐рд╢рд╛ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред



рдорд▓реНрдЯреА-рдореЙрдбреНрдпреВрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рдореЙрдбреНрдпреВрд▓ рд╣рдореЗрд╢рд╛ рдРрдк рдореЙрдбреНрдпреВрд▓ рд╣реЛрддрд╛ рд╣реИред рд╡рд╣ рд▓рдЧрднрдЧ рд╕рднреА рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдЬрд╛рдирддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдбреАрдЖрдИ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рд░реВрдкрд░реЗрдЦрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрдк рдореЙрдбреНрдпреВрд▓ рдХреА рдЗрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЗрд╕рдореЗрдВ рдореБрдЦреНрдп рд╣реЛрд╕реНрдЯ рдХреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдл рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдРрдк рдореЙрдбреНрдпреВрд▓ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рдХрдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рд╣реИ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рд╕реЗ рдРрдк рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреБрди: рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ред


рдмрд╛рдд рд╕рд╕реНрддреА рд╣реИред рдореБрдЭреЗ рдХреЛрдб рджрд┐рдЦрд╛рдУ


рдФрд░ рддреБрд░рдВрдд рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рд╣рдорд╛рд░рд╛ рдорд╛рдорд▓рд╛: рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдЫрдк рд╕реНрдХреНрд░реАрди рд╣реИ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд╛рдирд╛ рд╣реИ: рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдпрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдгред рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реНрдХреНрд░реАрди рд╕реЗ, рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреНрд░рдордг рд╣реИред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рд╣рдо рдПрдХ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдл рдмрдирд╛рддреЗ рд╣реИрдВ - рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред



рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рддрдХ рдкрд╣реБрдВрдЪ


рдЬрдм рдПрдХ рд╕реНрдХреНрд░реАрди рд╕реЗ рджреВрд╕рд░реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░реАрди рдХреЛ рдПрдХ рд╕рдВрдХреНрд░рдордг рдмрдирд╛рдиреЗ рдХрд╛ рд╕рдордп рдЖрддрд╛ рд╣реИ, рддреЛ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ - рдХреИрд╕реЗ?


рджрд░рдЕрд╕рд▓, рдлрд╝реАрдЪрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЖрдИрдбреА рддрдХ рдПрдХреНрд╢рди рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ NavController рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред


рдпрд╣ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ DI рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрдк рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЧреНрд░рд╛рдл рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд╝реАрдЪрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рд╡реНрд╣рд╛рдЯреНрд╕рдПрд╡рдирдХреЛрдорд╛рдВрдбрдкреЙрдЗрдбрд░ рдХрд╣реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рдЪрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрдорд╛рдВрдб рд╣реИрдВред


SplashNavCommandProvider.kt


interface SplashNavCommandProvider { val toAuth: NavCommand val toMain: NavCommand } 

рдХрдорд╛рдВрдб рдкреНрд░реЛрд╡рд╛рдЗрдбрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реА рдРрдк рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрдорд╛рдВрдб рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╡рд╣реА рдлрд╝реАрд▓реНрдб рд╣реЛрдВрдЧреЗ рдЬреЛ NavController.navigate рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рд╣реИрдВ


NavCommand.kt


 data class NavCommand( val action: Int, var args: Bundle? = null, val navOptions: NavOptions? = null ) 

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рд╕реНрдкреНрд▓реИрд╢ рд╕реНрдХреНрд░реАрди рд╕реЗ, 2 рд╕рдВрдХреНрд░рдордг рд╕рдВрднрд╡ рд╣реИрдВ: рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реНрдХреНрд░реАрди рдФрд░ рдореБрдЦреНрдп рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕реНрдХреНрд░реАрди рддрдХред рдЫрдк рдореЙрдбреНрдпреВрд▓ рдореЗрдВ, рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдБ:


SplashNavCommandProvider.kt


 interface SplashNavCommandProvider { val toAuth: NavCommand val toMain: NavCommand } 

рдРрдк рдореЙрдбреНрдпреВрд▓ рдореЗрдВ, рд╣рдо рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдбреА рдлреНрд░реЗрдорд╡рд░реНрдХ (рдореЗрд░реЗ рдкрд╛рд╕ рдбреИрдЧрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЗрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдкреНрд▓реИрд╢ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред


SplashNavCommandProviderImpl.kt - рдХрдорд╛рдВрдбрдкреНрд░реЛрд╡рд┐рдбрд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


 class SplashNavCommandProviderImpl @Inject constructor() : SplashNavCommandProvider { override val toAuth: NavCommand = NavCommand(R.id.action_splashFragment_to_authFragment) override val toMain: NavCommand = NavCommand(R.id.action_splashFragment_to_mainFragment) } 

SplashNavigationModule.kt - рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП DI рдореЙрдбреНрдпреВрд▓


 @Module interface SplashNavigationModule { @Binds fun bindSplashNavigator(impl: SplashNavCommandProviderImpl): SplashNavCommandProvider } 

AppActivityModule.kt - рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдореБрдЦреНрдп DI рдореЙрдбреНрдпреВрд▓


 @Module interface AppActivityModule { @FragmentScope @ContributesAndroidInjector( modules = [ SplashNavigationModule::class ] ) fun splashFragmentInjector(): SplashFragment тАж } 

рдЫрдк рдореЙрдбреНрдпреВрд▓ рдореЗрдВ, рд╣рдо рдПрдорд╡реА (рдпрд╣рд╛рдВ) рдореЗрдВ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдХреЛ рдпрд╛ рддреЛ рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛ рдпрд╛ ViewModel рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ ...


SplashViewModel.kt


 class SplashViewModel @Inject constructor( private val splashNavCommandProvider: SplashNavCommandProvider ) ... 

рдЬрдм рд╕реНрдХреНрд░реАрди рдХрд╛ рддрд░реНрдХ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рджреВрд╕рд░реА рд╕реНрдХреНрд░реАрди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рддреЛ рд╣рдо рдЕрдкрдиреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдПрдХ рдХрдорд╛рдВрдб рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рджреВрд╕рд░реА рд╕реНрдХреНрд░реАрди рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рд╕реНрдкрд▓реИрд╢рдирд╛рд╡рд░рдореЙрдиреНрдбрдкреЙрдЗрдбрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╕реАрдзреЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╣рдо рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред


рдлреНрд░реИрдЧрдореЗрдВрдЯ рдореЗрдВ, рд╕рдВрдХреНрд░рдордг рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ NavController рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рд╕реНрдХреНрд░реАрди рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рдЯреБрдХрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдмрд╕ рдирд╡реАрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ findNavController () рд╡рд┐рдзрд┐ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдкрд░ рдиреЗрд╡рд┐рдЧреЗрдЯ рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ:


 findNavController().navigate(toMain) 

рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦрдХрд░ рдЖрдк рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ


FragmentExt.kt


 fun Fragment.navigate(navCommand: NavCommand) { findNavController().navigate(navCommand.action, navCommand.args, navCommand.navOptions) } 

рд╕рд┐рд░реНрдл рдЯреБрдХрдбрд╝реЗ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕рд┐рдВрдЧрд▓рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рд╣реИрдВ, рддреЛ рдЖрдк рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рднреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред


рдлрд┐рд░ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдЕрдВрджрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛


 navigate(toMain) 

рдиреЗрд╕реНрдЯреЗрдб рдлреНрд░реЗрдЧрдореЗрдВрдЯреНрд╕


рдиреЗрд╕реНрдЯреЗрдб рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:


  • рдПрдХ рдиреЗрд╕реНрдЯреЗрдб рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рдВрдХреНрд░рдордг
  • рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╕реНрддрд░реЛрдВ рдкрд░ рдЬрд╛рдирд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╣реЛрд╕реНрдЯ

рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, рдЬреЛ рд╣рдордиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рдерд╛ рд╡рд╣ рд╡рд┐рд╕реНрддрд╛рд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред рдФрд░ рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдореЗрдЬрдмрд╛рди рдХреЗ рдирд╡рд╕рдВрдХреНрд░рдордг рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рдЗрд╕ рд╣реЛрд╕реНрдЯ рдХреА рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЗрд╕ рд╣реЛрд╕реНрдЯ рдХреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдл рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЗрд╡рд▓ рдореЙрдбреНрдпреВрд▓ рддрдХ рд╣реА рдЗрд╕рдХреА рдкрд╣реБрдВрдЪ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдлреАрдЪрд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ, рдЬрд╣рд╛рдВ рдбреИрдЧрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ NavController рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред


GlobalHostModule.kt - рд╡реИрд╢реНрд╡рд┐рдХ рд╣реЛрд╕реНрдЯ рдЖрдИрдбреА рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП DI рдореЙрдбреНрдпреВрд▓


 @Provides @GlobalHost fun provideGlobalHostId(): Int = R.id.host_global 

AppActivityModule.kt - рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рдореБрдЦреНрдп DI рдореЙрдбреНрдпреВрд▓


 @FragmentScope @ContributesAndroidInjector( modules = [ GlobalHostModule::class, ProfileNavigationModule::class, ... ] ) fun profileKnownFragmentInjector(): ProfileKnownFragment 

рдЯреБрдХрдбрд╝рд╛ рдореЗрдВ рдореЗрдЬрдмрд╛рди рдЖрдИрдбреА рдирд┐рд░реНрднрд░рддрд╛ рдПрдореНрдмреЗрдб


 @Inject @GlobalHost var hostId = 0 

рдЬрдм рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдЬрдмрд╛рди рдХреЗ рд▓рд┐рдП рдХреНрд╡рд╛рд▓реАрдлрд╛рдпрд░ рдмрдирд╛рдиреЗ рдпрд╛ рдореМрдЬреВрджрд╛ рдХреНрд╡рд╛рд▓реАрдлрд╛рдпрд░ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рддрд╛рдХрд┐ рдбреИрдЧрд░ рд╕рдордЭреЗрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдЗрдВрдЯ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИред


GlobalHost.kt


 @Qualifier @Retention(AnnotationRetention.RUNTIME) annotation class GlobalHost 

рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрд╕реНрдЯ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдЖрдИрдбреА рдХреЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рд╣реЛрд╕реНрдЯ рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ NavController рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдХрд┐рд╕реА рднреА рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВрдЧреЗ:


FragmentExt.kt


 fun Fragment.navigate(navCommand: NavCommand, hostId: Int? = null) { val navController = if (hostId == null) { findNavController() } else { Navigation.findNavController(requireActivity(), hostId) } navController.navigate(navCommand.action, navCommand.args, navCommand.navOptions) } 

рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рдХреЛрдб


 navigate(toAuth, hostId) 

рдпреЗ рдорд▓реНрдЯреА-рдореЙрдбреНрдпреВрд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдЬреЗрдЯрдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рдЖрдХрд░реНрд╖рдг рдереЗред рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЙрдирдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА :)

Source: https://habr.com/ru/post/hi475104/


All Articles