Closed philipy355 closed 8 months ago
class MainActivity : ComponentActivity() { @OptIn(ExperimentalMaterial3Api::class, ExperimentalComposeUiApi::class) @SuppressLint("UnusedMaterial3ScaffoldPaddingParameter", "UnusedMaterialScaffoldPaddingParameter" ) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val navController = rememberNavController() NavHost(navController = navController, startDestination = "first",){ composable("first"){ FirstScreen(navController) } composable("second"){ SecondScreen(navController) } composable("third/{value}"){ navBackStackEntry -> ThirdScreen( navController = navController, value = navBackStackEntry.arguments?.getString("value") ?: "") } } } } }
@OptIn(ExperimentalMaterial3Api::class) @Composable fun FirstScreen(navController: NavController){ val (value, setValue) = remember { mutableStateOf("") } Column( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ){ Text(text = "첫 화면") Spacer(modifier = Modifier.height(16.dp)) Button(onClick = { navController.navigate("second") }){ Text("두 번째!") } Spacer(modifier = Modifier.height(16.dp)) TextField(value = value, onValueChange = setValue) Button(onClick = { if (value.isNotEmpty()){ navController.navigate("third/$value") } }){ Text("세 번째!") } } }
@Composable fun SecondScreen(navController: NavController){ Column( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ){ Text(text = "두번째 화면") Spacer(modifier = Modifier.height(16.dp)) Button(onClick = { //navController.navigate("first") navController.navigateUp() //navController.popBackStack() }){ Text("뒤로가기!") } } }
@Composable fun ThirdScreen(navController: NavController, value: String){ Column( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ){ Text(text = "세번째 화면") Spacer(modifier = Modifier.height(16.dp)) Text(value) Button(onClick = { navController.navigateUp() }){ Text("뒤로가기") } } }
- 의존성 ```xml //Navigation implementation "androidx.navigation:navigation-compose:2.4.0-alpha10"
참고 url https://mvnrepository.com/artifact/androidx.navigation/navigation-compose/2.4.0
@Composable fun SecondScreen(navController: NavController){ Column( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ){ Text(text = "두번째 화면") Spacer(modifier = Modifier.height(16.dp)) Button(onClick = { //navController.navigate("first") navController.navigateUp() //navController.popBackStack() }){ Text("뒤로가기!") } } }
@Composable fun ThirdScreen(navController: NavController, value: String){ Column( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, ){ Text(text = "세번째 화면") Spacer(modifier = Modifier.height(16.dp)) Text(value) Button(onClick = { navController.navigateUp() }){ Text("뒤로가기") } } }