gpt4 book ai didi

android - 将数据传递给 Android Compose 中的前一个可组合对象

转载 作者:行者123 更新时间:2023-12-04 23:53:22 24 4
gpt4 key购买 nike

我将做一个简单的示例。
我有 2 个屏幕:屏幕 A 和屏幕 B。从屏幕 A,我打开屏幕 B。当我将屏幕 B 返回到屏幕 A 时,我想将数据传输回屏幕 A。
使用 Android Fragment,我可以使用 Shared ViewModel 或 Fragment Result API 来执行此操作。
但是使用 Android Compose,Fragment Result Api 不在 Compose 中。使用 Shard ViewModel,我必须附加共享 ViewModel 什么生命周期才能使其保持 Activity 状态? Activity ,...或其他东西。
还是有其他方法可以做到这一点?

最佳答案

如果您使用喷气背包导航,您可以通过将数据添加到上一个返回堆栈条目的 savedStateHandle 来传回数据。 (Documentation)
屏幕传回数据:

composable("B") {
ComposableB(
popBackStack = { data ->
// Pass data back to A
navController.previousBackStackEntry
?.savedStateHandle
?.set("key", data)

navController.popBackStack()
}
)
}
屏幕 一个 接收数据:
composable("A") { backStackEntry ->
// get data passed back from B
val data: T by backStackEntry
.savedStateHandle
.getLiveData<T>("key")
.observeAsState()

ComposableA(
data = data,
navToB = {
// optional: clear data so LiveData emits
// even if same value is passed again
backStackEntry.savedStateHandle.remove("key")
// navigate ...
}
)
}
替换 "key"具有唯一字符串 T与您的数据类型和 data与您的数据。

关于android - 将数据传递给 Android Compose 中的前一个可组合对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70609796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com