From d38060e9b37debd14776b2bfca157915b2ef343f Mon Sep 17 00:00:00 2001 From: dongliang Date: Thu, 7 May 2026 21:36:09 +0930 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=93=8D=E4=BD=9C=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E4=B8=8D=E6=B6=88=E5=A4=B1=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20+=20=E7=BB=9F=E4=B8=80=E5=BC=B9=E7=AA=97=E4=BA=A4=E4=BA=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题:back=false 导致弹窗永远不消失 修复:所有弹窗统一 back=true + countdown=2 自动消失 用 onBack 回调替代 postDelayed,弹窗消失后再执行刷新/返回 弹窗梳理: - 操作成功(抢单/打卡/完成):2秒消失 → onBack 刷新列表 - 全部完成:2秒消失 → onBack 返回首页 - NFC打卡成功:2秒消失 → postDelayed 刷新详情 - 失败/网络异常:3秒消失 → 无回调 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../xiaoqu/watch/ui/task/TaskListFragment.kt | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt b/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt index ef147a1..fa8d835 100644 --- a/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt +++ b/app/src/main/java/com/xiaoqu/watch/ui/task/TaskListFragment.kt @@ -163,11 +163,12 @@ class TaskListFragment : BaseFragment() { // 操作后列表为空 → 显示"全部完成"后返回首页 tipDialog.show( status = QuTipDialog.Status.SUCCESS, - title = "全部完成" + title = "全部完成", + back = true, step = 1, countdown = 2, + onBack = { + if (isAdded && view != null) findNavController().popBackStack() + } ) - binding.root.postDelayed({ - if (isAdded && view != null) findNavController().popBackStack() - }, 1500) } else { showEmpty() } @@ -933,17 +934,15 @@ class TaskListFragment : BaseFragment() { val currentId = taskList.getOrNull(taskIndex)?.id ?: 0L filterTaskIds = filterTaskIds!!.filter { it != currentId }.toLongArray() } - // 先显示成功弹窗,等弹窗消失后再刷新(避免黑屏闪烁) + // 弹窗 2 秒自动消失,消失后刷新列表 tipDialog.show( status = QuTipDialog.Status.SUCCESS, title = successMsg, - back = false, step = 0, countdown = 0 + back = true, step = 1, countdown = 2, + onBack = { + if (isAdded && view != null) fetchTaskIds() + } ) - // 2 秒后刷新 - binding.root.postDelayed({ - if (!isAdded || view == null) return@postDelayed - fetchTaskIds() - }, 2000) } is ApiResult.Error -> { tipDialog.show(