问题描述
我遇到的情况是通过后退按钮退出配置样式片段。目的是检测是否有缓存数据尚未保存,此时强制保存或取消。
我正在使用 activity.onBackpresseddispatcher.addCallback 及其关联的 SAM handleOnBackpressed 来拦截 onBackpressed。如果没有未保存的数据,则逻辑只是继续执行 activity.onBackpressed(),完全没有问题。在有未保存数据的情况下,会调用一个对话框(DialogFragment)来确定是取消还是保存,并插入适当的逻辑来处理这些在消极或积极的点击回调中。但是,尝试在 onClick 逻辑中执行 activity.onBackpressed() 不会按预期工作 - 控制返回到启动对话框的片段,而不是后台堆栈中的前一个片段,如果不需要对话框,就会发生这种情况。
我猜潜在的问题是我正在对话框片段的上下文中处理 activity.onBackpressed(),而不是在调用对话框的片段的上下文中。在任何情况下,当对话框被关闭时,对话框都会自动弹出它的后台堆栈,这也是我要求它做的所有事情。我可能不完全理解内部的阴谋,但它确实有道理。不太清楚的是我是如何解决这个问题的。
我玩过 navController.navigateUp(),但不出所料,这完全一样。理想情况下,我想要某种方式来捕获从对话框到调用片段的控制返回,但我还没有找到任何可以做到这一点的地方(早期的想法是在调用片段生命周期中,但这似乎没有通过插入对话片段以任何方式更改)。关于如何最好地管理这个的任何想法?最坏的情况是回到使用片段控制器 backstack,但希望有一种更简单的方法。
谢谢和问候。安德鲁
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)