问题描述
我想显示进度对话框,并且仅在对话框出现在屏幕上之后才执行某些操作(例如,开始联网)。
以默认方式执行此操作(将navigate()
更改为DialogFragment
,然后启动网络作业)有时会导致问题,当作业完成时,但对话框未出现在屏幕上(它在屏幕上的某个时间点出现)不久的将来。)
第一件事是监听DestinationChanged
上的NavController
事件,但是作为docs say,更改目的地与View
无关:
导航完成后将调用此方法,但相关的过渡可能仍在播放
这就是为什么出现上述问题的原因:更改了目的地,但FragmentManager事务仍在“播放”,并且DialogFragment
似乎有点延迟。这里可能还会发生其他一些问题,尤其是弹出错误的当前后向堆栈条目(DialogFragment
时,但实际上,当完成快速网络作业时,这里可能不是对话框,而是父片段。
通过观察NavDestination
,LiveData
之间的通信看起来是多余的,因为它需要传递额外的值(在没有其他东西的情况下,我使用这种方式来传递精确的{{1 }},来自Lifecycle.Event.ON_START
的{{1}}。
这里可能提供了一种直接访问onStart
后面DialogFragment
之间(或通过导航组件间接)之间的生命周期的方法,并且使Fragment
不受丑陋的影响数据?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)