Navigation Compose Demo

Dependencies implementation("androidx.navigation:navigation-compose:2.9.2") Use class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val navController = rememberNavController() NavigationDemoApp(navController) } } } @Composable fun NavigationDemoApp(navController: NavHostController) { NavHost(navController = navController, startDestination = "screen1") { composable("screen1") { Screen1(navController) } composable("screen2") { Screen2(navController) } } } @Composable fun Screen1(navController: NavController) { Column( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { Text(text = "Screen 1") Button(onClick = { navController.navigate("screen2") }) { Text(text = "Go to Screen 2") } } } @Composable fun Screen2(navController: NavController) { Column( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { Text(text = "Screen 2") Button(onClick = { navController.popBackStack() }) { Text(text = "Go back") } } } 官方指南 https://developer.android.com/develop/ui/compose/navigation ...

July 19, 2025 · 1 min

ViewModel Demo

dependencies implementation(libs.androidx.lifecycle.viewmodel.ktx) implementation(libs.androidx.lifecycle.livedata.ktx) 一个继承自 ViewModel 的类 class MainViewModel : ViewModel() { private val _number = MutableStateFlow(100) val number: StateFlow<Int> get() = _number } 使用它 class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { val mainViewModel: MainViewModel by viewModels() val numberState by mainViewModel.number.collectAsState() ViewModelDemoTheme { Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding -> Greeting( num = numberState, modifier = Modifier.padding(innerPadding) ) } } } } } @Composable fun Greeting(num: Int, modifier: Modifier = Modifier) { Text( text = num.toString(), modifier = modifier ) }

July 18, 2025 · 1 min