рдЖрдкрдХреЗ рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд▓реЙрдЧрд┐рди рдлрд╝реНрд▓реЛ, рд╡рд┐рдЬрд╝рд░реНрдб рдпрд╛ рдЕрдиреНрдп рд╕рдмрдлрд╝реНрд▓реЛ рдХреЛ рдЖрдо рддреМрд░ рдкрд░ рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдлрд╝ рдХреЗ рддреМрд░ рдкрд░ рд╕рдмрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдЗрд╕ рддрд░рд╣ рд╕реЗ, рд╕рдмрдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рдлрд╝реНрд▓реЛ рдХреЛ рдиреЗрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ, рдЖрдкрдХреЗ рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдпреВрдЬрд╝рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдпреВрдЖрдИ) рдХреЗ рдореБрдЦреНрдп рдлрд╝реНрд▓реЛ рдХреЛ рд╕рдордЭрдирд╛ рдФрд░ рдореИрдиреЗрдЬ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ.
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдпреЗ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХрд╛ рдПрдХ рд▓реЗрд╡рд▓ рднреА рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рддреЗ рд╣реИрдВ. рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рд╕реЗ рдмрд╛рд╣рд░ рдХреЗ рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдХреЗ рдкрд╛рд╕, рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдХрд┐рд╕реА рднреА рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдХрд╛ рд╕реАрдзрд╛ рдРрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рд╣реЛрддрд╛. рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЙрдиреНрд╣реЗрдВ рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ navigate()
рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП. рдЗрд╕рд╕реЗ, рдЧреНрд░рд╛рдлрд╝ рдХреЗ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдЕрд╕рд░ рдбрд╛рд▓реЗ рдмрд┐рдирд╛, рдЗрдВрдЯрд░рдирд▓ рд▓реЙрдЬрд┐рдХ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.
рдЙрджрд╛рд╣рд░рдг
рдЖрдкрдХреЗ рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЯреЙрдк-рд▓реЗрд╡рд▓ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдлрд╝, рдЙрд╕ рд╢реБрд░реБрдЖрддреА рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рд╕реЗ рд╢реБрд░реВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдРрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдкрд░ рджрд┐рдЦрддрд╛ рд╣реИ. рд╕рд╛рде рд╣реА, рдЗрд╕рдореЗрдВ рд╡реЗ рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рддреЗ рд╕рдордп рджрд┐рдЦрддреЗ рд╣реИрдВ.

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рдЬрд╝рд░реВрд░реА рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рд┐рд░реНрдлрд╝ рдкрд╣рд▓реА рдмрд╛рд░ рдРрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдкрд░, рдлрд╝рд┐рдЧрд░ 1 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдЯреЙрдк-рд▓реЗрд╡рд▓ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдореМрдЬреВрдж title_screen рдФрд░ register рд╕реНрдХреНрд░реАрди рджрд┐рдЦреЗрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╕реЗрд╡ рд╣реЛ рдЬрд╛рддреА рд╣реИ. рдРрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрд╛рдж рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдкрд░, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕реАрдзреЗ рдореИрдЪ рд╕реНрдХреНрд░реАрди рдкрд░ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП.
рд╕рдмрд╕реЗ рд╕рд╣реА рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдЪ рд╕реНрдХреНрд░реАрди рдХреЛ рдЯреЙрдк-рд▓реЗрд╡рд▓ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдлрд╝ рдХрд╛ рд╕реНрдЯрд╛рд░реНрдЯ рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдХреЗ рддреМрд░ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ. рд╕рд╛рде рд╣реА, рдЯрд╛рдЗрдЯрд▓ рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рд╕реНрдХреНрд░реАрди рдХреЛ рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВ. рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдлрд╝рд┐рдЧрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рдореИрдЪ рд╕реНрдХреНрд░реАрди рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдкрд░, рджреЗрдЦреЗрдВ рдХрд┐ рдХреЛрдИ рд░рдЬрд┐рд╕реНрдЯрд░реНрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ. рдЕрдЧрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд░рдЬрд┐рд╕реНрдЯрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рд░рдЬрд┐рд╕реНрдЯреНрд░реЗрд╢рди рд╕реНрдХреНрд░реАрди рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ.
рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рдЦрд╛рд╕ рд╢рд░реНрддреЛрдВ рд╡рд╛рд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╝реНрдпрд╛рджрд╛ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдЦрд╛рд╕ рд╢рд░реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдиреЗрд╡рд┐рдЧреЗрд╢рди рд▓реЗрдЦ рдкрдврд╝реЗрдВ.
Compose
Compose рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рдиреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, NavGraphBuilder.navigation()
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ. рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдЬреЛрдбрд╝рддреЗ рд╕рдордп, navigation()
рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ NavGraphBuilder.composable()
рдФрд░ NavGraphBuilder.dialog()
рдлрд╝рдВрдХреНрд╢рди рдХреА рддрд░рд╣ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.
рдЗрди рджреЛрдиреЛрдВ рдореЗрдВ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ navigation
рд╕реЗ, рдирдП рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдХреЗ рдмрдЬрд╛рдп рдиреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЧреНрд░рд╛рдлрд╝ рдмрдирддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, navigation()
рдХреЗ рд▓реИрдВрдмрдбрд╛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ composable()
рдФрд░ dialog()
рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ.
рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ, Compose рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ рджреВрд╕рд░реА рдЗрдореЗрдЬ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
// Routes
@Serializable object Title
@Serializable object Register
// Route for nested graph
@Serializable object Game
// Routes inside nested graph
@Serializable object Match
@Serializable object InGame
@Serializable object ResultsWinner
@Serializable object GameOver
NavHost(navController, startDestination = Title) {
composable<Title> {
TitleScreen(
onPlayClicked = { navController.navigate(route = Register) },
onLeaderboardsClicked = { /* Navigate to leaderboards */ }
)
}
composable<Register> {
RegisterScreen(
onSignUpComplete = { navController.navigate(route = Game) }
)
}
navigation<Game>(startDestination = Match) {
composable<Match> {
MatchScreen(
onStartGame = { navController.navigate(route = InGame) }
)
}
composable<InGame> {
InGameScreen(
onGameWin = { navController.navigate(route = ResultsWinner) },
onGameLose = { navController.navigate(route = GameOver) }
)
}
composable<ResultsWinner> {
ResultsWinnerScreen(
onNextMatchClicked = {
navController.navigate(route = Match) {
popUpTo(route = Match) { inclusive = true }
}
},
onLeaderboardsClicked = { /* Navigate to leaderboards */ }
)
}
composable<GameOver> {
GameOverScreen(
onTryAgainClicked = {
navController.navigate(route = Match) {
popUpTo(route = Match) { inclusive = true }
}
}
)
}
}
}
рдХрд┐рд╕реА рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдкрд░ рд╕реАрдзреЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдХреА рддрд░рд╣ рд░реВрдЯ рдЯрд╛рдЗрдк рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВ. рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░реВрдЯ рдПрдХ рдЧреНрд▓реЛрдмрд▓ рдХреЙрдиреНрд╕реЗрдкреНрдЯ рд╣реИ. рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдЙрди рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рди рдкрд░ рдХреЛрдИ рднреА рд╕реНрдХреНрд░реАрди рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░ рд╕рдХрддреА рд╣реИ:
navController.navigate(route = Match)
XML
рдПрдХреНрд╕рдПрдордПрд▓ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рд╕рдордп, рдиреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреЗрд╡рд┐рдЧреЗрд╢рди рдПрдбрд┐рдЯрд░ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рдпрд╣ рддрд░реАрдХрд╛ рдЕрдкрдирд╛рдПрдВ:
- рдиреЗрд╡рд┐рдЧреЗрд╢рди рдПрдбрд┐рдЯрд░ рдореЗрдВ, Shift рдмрдЯрди рдХреЛ рджрдмрд╛рдХрд░ рд░рдЦреЗрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдЙрди рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реИ.
рд╕рдВрджрд░реНрдн рдореЗрдиреНрдпреВ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд░рд╛рдЗрдЯ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ. рдЗрд╕рдХреЗ рдмрд╛рдж, рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдВ > рдирдпрд╛ рдЧреНрд░рд╛рдлрд╝ рдЪреБрдиреЗрдВ. рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди, рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ. рджреВрд╕рд░реА рдЗрдореЗрдЬ рдореЗрдВ, рдиреЗрд╡рд┐рдЧреЗрд╢рди рдПрдбрд┐рдЯрд░ рдореЗрдВ рдиреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЧреНрд░рд╛рдлрд╝ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рджреВрд╕рд░реА рдЗрдореЗрдЬ. рдиреЗрд╡рд┐рдЧреЗрд╢рди рдПрдбрд┐рдЯрд░ рдореЗрдВ рдиреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЧреНрд░рд╛рдлрд╝ рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ. рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдкреИрдирд▓ рдореЗрдВ рдпреЗ рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рджрд┐рдЦрддреЗ рд╣реИрдВ:
- рдЯрд╛рдЗрдк, рдЬрд┐рд╕рдореЗрдВ "рдиреЗрд╕реНрдЯреЗрдб рдЧреНрд░рд╛рдлрд╝" рд╢рд╛рдорд┐рд▓ рд╣реИ
- рдЖрдИрдбреА, рдЬрд┐рд╕рдореЗрдВ рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЖрдИрдбреА рд╣реЛрддрд╛ рд╣реИ. рдЗрд╕ рдЖрдИрдбреА рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓, рдЖрдкрдХреЗ рдХреЛрдб рд╕реЗ рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдХреЛ рд░реЗрдлрд╝рд░рдВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ.
рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдкрд░ рджреЛ рдмрд╛рд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ.
рдПрдХреНрд╕рдПрдордПрд▓ рд╡реНрдпреВ рдкрд░ рдЯреЙрдЧрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯреЗрдХреНрд╕реНрдЯ рдЯреИрдм рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ. рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдиреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдлрд╝ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ. рдЗрд╕ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ, рдЗрд╕рдХреЗ рдЕрдкрдиреЗ
navigation
рдПрд▓рд┐рдореЗрдВрдЯ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ рдЖрдИрдбреА рдФрд░ рдПрдХstartDestination
рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рднреА рд╣реЛрддрд╛ рд╣реИ. рдпрд╣ рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рдкрд╣рд▓реЗ рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ:<?xml version="1.0" encoding="utf-8"?> <navigation xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" app:startDestination="@id/mainFragment"> <fragment android:id="@+id/mainFragment" android:name="com.example.cashdog.cashdog.MainFragment" android:label="fragment_main" tools:layout="@layout/fragment_main" > <action android:id="@+id/action_mainFragment_to_sendMoneyGraph" app:destination="@id/sendMoneyGraph" /> <action android:id="@+id/action_mainFragment_to_viewBalanceFragment" app:destination="@id/viewBalanceFragment" /> </fragment> <fragment android:id="@+id/viewBalanceFragment" android:name="com.example.cashdog.cashdog.ViewBalanceFragment" android:label="fragment_view_balance" tools:layout="@layout/fragment_view_balance" /> <navigation android:id="@+id/sendMoneyGraph" app:startDestination="@id/chooseRecipient"> <fragment android:id="@+id/chooseRecipient" android:name="com.example.cashdog.cashdog.ChooseRecipient" android:label="fragment_choose_recipient" tools:layout="@layout/fragment_choose_recipient"> <action android:id="@+id/action_chooseRecipient_to_chooseAmountFragment" app:destination="@id/chooseAmountFragment" /> </fragment> <fragment android:id="@+id/chooseAmountFragment" android:name="com.example.cashdog.cashdog.ChooseAmountFragment" android:label="fragment_choose_amount" tools:layout="@layout/fragment_choose_amount" /> </navigation> </navigation>
рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ, рд░реВрдЯ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдиреЗрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рд╕рдВрд╕рд╛рдзрди рдЖрдИрдбреА рдкрд╛рд╕ рдХрд░реЗрдВ:
Kotlin
view.findNavController().navigate(R.id.action_mainFragment_to_sendMoneyGraph)
Java
Navigation.findNavController(view).navigate(R.id.action_mainFragment_to_sendMoneyGraph);
- рдбрд┐рдЬрд╝рд╛рдЗрди рдЯреИрдм рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рдХрд░, рд░реВрдЯ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд░реВрдЯ рдЧреНрд░рд╛рдлрд╝ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ.
include рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ, рдЕрдиреНрдп рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдлрд╝ рдХреЛ рд░реЗрдлрд╝рд░рдВрд╕ рдХрд░рдирд╛
рдЕрдкрдиреЗ рдЧреНрд░рд╛рдлрд╝ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рдореЙрдбреНрдпреВрд▓рд░ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ. рдЗрд╕рдХреЗ рд▓рд┐рдП, рдкреИрд░рдВрдЯ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ <include>
рдПрд▓рд┐рдореЗрдВрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдХреЗ, рдПрдХ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рджреВрд╕рд░реЗ рдЧреНрд░рд╛рдлрд╝ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ. рдЗрд╕рд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдХрд┐рд╕реА рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ. рдЗрд╕рд╕реЗ, рдЧреНрд░рд╛рдлрд╝ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдорд┐рд▓рддреА рд╣реИ.
рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ, <include>
рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
<!-- (root) nav_graph.xml -->
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/fragment">
<include app:graph="@navigation/included_graph" />
<fragment
android:id="@+id/fragment"
android:name="com.example.myapplication.BlankFragment"
android:label="Fragment in Root Graph"
tools:layout="@layout/fragment_blank">
<action
android:id="@+id/action_fragment_to_second_graph"
app:destination="@id/second_graph" />
</fragment>
...
</navigation>
<!-- included_graph.xml -->
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/second_graph"
app:startDestination="@id/includedStart">
<fragment
android:id="@+id/includedStart"
android:name="com.example.myapplication.IncludedStart"
android:label="fragment_included_start"
tools:layout="@layout/fragment_included_start" />
</navigation>