From 646f780a1fe55f37313291a99c9b25ef619a1735 Mon Sep 17 00:00:00 2001 From: dongliang Date: Thu, 7 May 2026 21:31:44 +0930 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BB=BB=E5=8A=A1=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E4=BA=A4=E4=BA=92=E4=BC=98=E5=8C=96=EF=BC=88?= =?UTF-8?q?=E6=B6=88=E9=99=A4=E9=BB=91=E5=B1=8F=E9=97=AA=E7=83=81=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 操作成功后先显示弹窗 2 秒,弹窗消失后再刷新(不再立即刷新导致黑屏) 2. 刷新时不显示 loading(保持当前内容,静默更新) 3. 列表全部完成后显示"全部完成"弹窗 1.5 秒,再返回首页 之前:完成→黑屏loading→突然跳到下一个/回首页 现在:完成→弹窗"任务已完成"→平滑切到下一个/弹窗"全部完成"→回首页 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../xiaoqu/watch/ui/task/TaskListFragment.kt | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 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 7efa920..ef147a1 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 @@ -130,7 +130,8 @@ class TaskListFragment : BaseFragment() { /** 第一步:获取任务 ID 列表 */ private fun fetchTaskIds() { - showLoading() + // 已操作过的刷新不显示 loading(保持当前内容,避免黑屏) + if (!hasActioned) showLoading() // 通知跳转:有 taskIds 时不走 queryTaskIds,直接按 ID 构建列表 val ids = filterTaskIds @@ -159,8 +160,14 @@ class TaskListFragment : BaseFragment() { if (taskIndex >= taskList.size) taskIndex = taskList.size - 1 fetchCurrentDetail() } else if (hasActioned) { - // 操作后列表为空 → 自动返回上一页 - findNavController().popBackStack() + // 操作后列表为空 → 显示"全部完成"后返回首页 + tipDialog.show( + status = QuTipDialog.Status.SUCCESS, + title = "全部完成" + ) + binding.root.postDelayed({ + if (isAdded && view != null) findNavController().popBackStack() + }, 1500) } else { showEmpty() } @@ -920,19 +927,23 @@ class TaskListFragment : BaseFragment() { when (result) { is ApiResult.Success -> { Timber.d("任务操作: $successMsg") - hasActioned = true // 标记已操作,列表为空时自动返回 - // 完成任务后,通知模式下从 ID 列表中移除(避免已完成任务仍显示) + hasActioned = true + // 完成任务后,通知模式下从 ID 列表中移除 if (action == "complete" && filterTaskIds != null) { val currentId = taskList.getOrNull(taskIndex)?.id ?: 0L filterTaskIds = filterTaskIds!!.filter { it != currentId }.toLongArray() } + // 先显示成功弹窗,等弹窗消失后再刷新(避免黑屏闪烁) tipDialog.show( status = QuTipDialog.Status.SUCCESS, title = successMsg, - back = true, step = 0, countdown = 2 + back = false, step = 0, countdown = 0 ) - // 操作成功后刷新:重新获取列表和详情 - fetchTaskIds() + // 2 秒后刷新 + binding.root.postDelayed({ + if (!isAdded || view == null) return@postDelayed + fetchTaskIds() + }, 2000) } is ApiResult.Error -> { tipDialog.show(