Beim Wechseln zwischen Registerkarten fällt mir auf, dass die Fragmente neu erstellt werden. Wie kann ich die Fragmente behalten, damit sie ihre Daten nicht neu laden?
Code: Select all
internal fun NavGraph(
navController: NavHostController,
modifier: Modifier = Modifier
) {
NavHost(
navController = navController,
modifier = modifier,
startDestination = Screen.FrontPage
) {
composable {
AndroidFragment(clazz = FrontPageFragment::class.java)
}
composable {
AndroidFragment(clazz = LatestPageFragment::class.java)
}
}
}
Code: Select all
@AndroidEntryPoint
class MainActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Theme {
Content()
}
}
}
}
@Composable
private fun Content() {
val navController = rememberNavController()
var isSelectedIndex by rememberSaveable { mutableIntStateOf(0) }
val screens = listOf(
Screen.FrontPage,
Screen.LatestPage
)
Scaffold(
bottomBar = {
NavigationBar() {
screens.forEach { screen ->
val currentIndex = screens.indexOf(screen)
NavigationBarItem(
icon = {
Image(
painter = painterResource(screen.icon),
contentDescription = null
)
},
label = { Text(screen.title) },
selected = isSelectedIndex == currentIndex,
onClick = {
isSelectedIndex = currentIndex
navController.navigate(screen)
},
)
}
}
},
content = { innerPadding ->
NavGraph(
navController = navController,
modifier = Modifier.padding(innerPadding)
)
}
)
}