Jetpack Compose侧滑返回导航无法保留PrimaryTabRow选中索引
解决侧滑返回后Tab索引重置的问题
你遇到的问题根源在于remember仅能在组件的重组周期内维持状态,当导航到其他页面再侧滑返回时,当前页面会被重新创建,remember保存的状态随之重置。要让索引在页面重建后依然保留,只需将remember替换为rememberSaveable——它会把状态序列化后存入Bundle,在页面重建时自动恢复状态。
修改后的代码如下:
var tabIndex by rememberSaveable { mutableStateOf(0) } val tabs = listOf("Never Give", "You Up") PrimaryTabRow( selectedTabIndex = tabIndex ) { tabs.forEachIndexed { index, title -> Tab( text = { Text(title) }, selected = tabIndex == index, onClick = { tabIndex = index } ) } } when (tabIndex) { 0 -> SomeView() 1 -> AnotherView() }
rememberSaveable对Int、String这类基础可序列化类型无需额外配置,直接使用即可。如果是自定义对象,才需要额外提供自定义Saver,你的场景完全不需要这一步。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

