savedStateHandle 不从 livedata 恢复数据

问题描述 投票:0回答:0

我有一个带有 1 个按钮的自定义对话框片段。当这个按钮什么都不做时,我有 1 个案例。 当用户点击按钮时,我调用这个方法来保存对话框中的数据:

fun <T : Any> Fragment.setNavigationResult(
    result: T, key: String,
    navController: NavController = findNavController()
) {
    navController.previousBackStackEntry?.savedStateHandle?.set(key, result)
}

我在 Fragment(onViewCreated) 中有函数来听取这样的对话框的结果:

inline fun <T : Any> Fragment.registerForNavigationResult(
    key: String,
    crossinline resultEvent: (T) -> Unit
) {
    findNavController()
        .currentBackStackEntry
        ?.savedStateHandle
        ?.getLiveData<T>(key)
        ?.observe(viewLifecycleOwner) {
            resultEvent.invoke(it)
        }
}

但它没有被调用。 情况 1:用户看到这个对话框,锁定他的屏幕几分钟,然后再次打开应用程序,按钮没有

t work. i don
t 从 savedStateHandle 接收实时数据中的数据。如果用户不锁定屏幕,一切正常。 也许有人知道如何解决它?

android android-fragments android-livedata
© www.soinside.com 2019 - 2024. All rights reserved.