import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val navController = rememberNavController()
NavHost(navController = navController, startDestination = "home") {
composable("home") { HomeScreen(navController) }
composable("details") { DetailsScreen(navController) }
}
}
}
}
@Composable
fun HomeScreen(navController: androidx.navigation.NavHostController) {
Surface(color = MaterialTheme.colorScheme.background) {
Button(onClick = { navController.navigate("details") }) {
Text(text = "Go to Details")
}
}
}
@Composable
fun DetailsScreen(navController: androidx.navigation.NavHostController) {
Surface(color = MaterialTheme.colorScheme.background) {
Button(onClick = { navController.popBackStack() }) {
Text(text = "Back to Home")
}
}
}
We use rememberNavController() to create a navigation controller that manages navigation state. The NavHost defines two routes: home and details. Each route points to a composable screen.
The HomeScreen has a button that calls navController.navigate("details") to go to the details screen. The DetailsScreen has a button that calls navController.popBackStack() to go back to the previous screen, which is the home screen.
This setup shows a simple way to navigate between composables using Jetpack Compose Navigation.