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(