在 Fragment 或 Activity 中,ViewModel 的回调函数无法获取包含其生命周期的 Bundle 的数据。为了解决这个问题,可以在 ViewModel 中使用 SavedStateHandle 对象来访问 Bundle 数据。
示例代码如下:
class MyViewModel(private val savedState: SavedStateHandle) : ViewModel() {
fun getData() {
val data = savedState.get("myKey")
// use data here
}
}
在 Fragment 或 Activity 中,创建 ViewModel 的时候,可以将包含其生命周期的 Bundle 传递给 SavedStateHandle 对象。
示例代码如下:
class MyFragment : Fragment() {
private val viewModel: MyViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val data = arguments?.getString("myKey")
viewModel.savedState.set("myKey", data)
}
// rest of the fragment code here
}
上一篇:Android视图模型协程模式