如何侦听NavDestination背后的Fragment生命周期,而不是NavBackStackEntry?

问题描述

我想显示进度对话框,并且仅在对话框出现在屏幕上之后才执行某些操作(例如,开始联网)。 以默认方式执行此操作(将navigate()更改为DialogFragment,然后启动网络作业)有时会导致问题,当作业完成时,但对话框未出现在屏幕上(它在屏幕上的某个时间点出现)不久的将来。)

第一件事是监听DestinationChanged上的NavController事件,但是作为docs say,更改目的地与View无关:

导航完成后将调用此方法,但相关的过渡可能仍在播放

这就是为什么出现上述问题的原因:更改了目的地,但FragmentManager事务仍在“播放”,并且DialogFragment似乎有点延迟。这里可能还会发生其他一些问题,尤其是弹出错误的当前后向堆栈条目(DialogFragment时,但实际上,当完成快速网络作业时,这里可能不是对话框,而是父片段。

通过观察NavDestinationLiveData之间的通信看起来是多余的,因为它需要传递额外的值(在没有其他东西的情况下,我使用这种方式来传递精确的{{1 }},来自Lifecycle.Event.ON_START的{​​{1}}。

这里可能提供了一种直接访问onStart后面DialogFragment之间(或通过导航组件间接)之间的生命周期的方法,并且使Fragment不受丑陋的影响数据?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...