Mit AndroidFragment in Compose wird BottomNavigation neu erstelltAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Mit AndroidFragment in Compose wird BottomNavigation neu erstellt

Post by Anonymous »

Ich habe eine MainActivity, die Jetpack Compose verwendet, um ein Gerüst mit einer BottomBar einzurichten. Die BottomBar verwaltet einen NavHost, der zusammensetzbare Elemente enthält, zu denen auch AndroidFragment gehört.
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)
)
}
)
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post