尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
在 Fragment 中使用 LoadingAndRetryManager 的完整教程:加载中与重试状态优雅切换
在 Fragment 中使用 LoadingAndRetryManager 的完整教程加载中与重试状态优雅切换【免费下载链接】LoadingAndRetryManager无缝为Activity、Fragment、任何View设置加载loading、重试(retry)和无数据empty页面。项目地址: https://gitcode.com/gh_mirrors/lo/LoadingAndRetryManagerLoadingAndRetryManager 是一款轻量级 Android 状态切换库能无缝为 Activity、Fragment 以及任意 View 设置加载中loading、重试retry和无数据empty页面。本文将以 Fragment 场景为例手把手教你用几行代码实现加载中与重试状态优雅切换彻底告别手写if/else控制多个 View 显隐的繁琐代码。为什么需要在 Fragment 中管理加载状态在 Fragment 中请求网络数据时通常要处理三种情况数据加载中、加载失败、加载成功。传统的做法是在布局里堆多个 View再用setVisibility手动切换代码冗长且容易遗漏。LoadingAndRetryManager 把这一切封装成四个状态方法让 Fragment 的加载状态管理变得像开关灯一样简单。一分钟看懂核心 API ⚡在动手之前先记住这套最核心的状态切换 API方法作用showLoading()显示加载中页面showRetry()显示重试页面加载失败showContent()显示正常内容页面showEmpty()显示无数据页面以上 API 定义在 LoadingAndRetryManager.java 中内部由 LoadingAndRetryLayout.java 负责各 View 的显隐切换线程安全且自动回调主线程更新 UI。在 Fragment 中使用 LoadingAndRetryManager 的最快配置方法 第一步全局配置基础加载与重试布局如果多个页面共用同一套加载页和重试页建议在 Application 中一次性配置全局布局。参考 MyApplication.javapublic class MyApplication extends Application { Override public void onCreate() { super.onCreate(); LoadingAndRetryManager.BASE_RETRY_LAYOUT_ID R.layout.base_retry; LoadingAndRetryManager.BASE_LOADING_LAYOUT_ID R.layout.base_loading; LoadingAndRetryManager.BASE_EMPTY_LAYOUT_ID R.layout.base_empty; } }这样所有 Fragment 无需重复配置即可自动获得统一的加载、重试、空数据页面非常适合快速搭建 MVP 或 Demo。第二步在 onViewCreated 中生成 LoadingAndRetryManagerFragment 与 Activity 的用法完全一致只需在onViewCreated中调用generate(this, listener)即可完成绑定。以项目自带的 NormalFragment.java 为例Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mLoadingAndRetryManager LoadingAndRetryManager.generate(this, new OnLoadingAndRetryListener() { Override public void setRetryEvent(View retryView) { NormalFragment.this.setRetryEvent(retryView); } }); mLoadingAndRetryManager.showLoading(); // 进入页面立即显示加载中 }传入的第一个参数是 Fragment 实例框架会自动获取其根布局的父容器完成内容视图的替换与包裹对原有布局零侵入。第三步加载数据并切换加载与重试状态模拟网络请求等待 2 秒后随机展示内容页或重试页private void loadData() { new Thread() { Override public void run() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } if (Math.random() 0.6) { mLoadingAndRetryManager.showContent(); // 加载成功 } else { mLoadingAndRetryManager.showRetry(); // 加载失败展示重试页 } } }.start(); }至此Fragment 的加载中与重试状态切换已经完成重试按钮事件绑定的详细步骤 重试是加载失败后最关键的用户交互。在setRetryEvent回调中拿到重试页后找到按钮并绑定点击事件public void setRetryEvent(View retryView) { View view retryView.findViewById(R.id.id_btn_retry); view.setOnClickListener(new View.OnClickListener() { Override public void onClick(View v) { mLoadingAndRetryManager.showLoading(); // 重新显示加载中 loadData(); // 重新发起请求 } }); }点击重试 → 回到加载中 → 再次失败回到重试形成完整闭环用户体验非常流畅。为单个 Fragment 定制专属状态页面 全局布局不满足需求时可重写OnLoadingAndRetryListener中的三个生成方法返回自定义 View 或布局 IDOverride public View generateLoadingLayout() { return customLoadingView; } Override public int generateRetryLayoutId() { return R.layout.my_retry; } Override public int generateEmptyLayoutId() { return R.layout.my_empty; }接口定义见 OnLoadingAndRetryListener.java支持布局 ID 与 View 两种方式灵活度很高。进阶技巧为任意 View 添加状态切换 LoadingAndRetryManager 不只支持 Fragment 和 Activity把generate的第一个参数换成任意 View 同样生效。项目中的 AnyViewTestActivity.java 就演示了为 TextView 单独绑定加载与重试状态的能力适合列表项、卡片等局部区域的精细控制。常见问题与避坑指南 生命周期问题建议在onViewCreated之后再调用generate确保 Fragment 根视图已创建完成。线程切换框架内部已处理线程切换子线程中调用showLoading()等方法是安全的会自动post到主线程执行。布局冲突重试按钮 ID 需要与重试布局保持一致例如示例中的R.id.id_btn_retry否则findViewById会返回空指针。全局与局部优先级自定义布局的优先级高于 Application 中配置的全局布局按需选择即可。总结 LoadingAndRetryManager 用极小的学习成本解决了 Fragment 加载状态管理的通用痛点。从全局配置、生成管理器、绑定重试事件到四种状态切换全部核心代码不超过 30 行。如果你也在为 Fragment 的加载中、重试、空数据页面发愁不妨立刻把它接入项目体验一次丝滑的状态切换吧【免费下载链接】LoadingAndRetryManager无缝为Activity、Fragment、任何View设置加载loading、重试(retry)和无数据empty页面。项目地址: https://gitcode.com/gh_mirrors/lo/LoadingAndRetryManager创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

为什么如此流畅:Jazz² Resurrection 帧率无关游戏逻辑与性能优化(AVX2/CPU运行时派发)

为什么如此流畅:Jazz² Resurrection 帧率无关游戏逻辑与性能优化(AVX2/CPU运行时派发)

为什么如此流畅:Jazz Resurrection 帧率无关游戏逻辑与性能优化(AVX2/CPU运行时派发) 【免费下载链接】jazz2-native 🎮  Jazz Resurrection: Native C reimplementation of Jazz Jackrabbit 2 项目地址: https://gitcode.com…

📅 2026/9/12 2:13:10
兄弟打印机E3错误深度解析:从废墨计数器原理到硬件维护实战

兄弟打印机E3错误深度解析:从废墨计数器原理到硬件维护实战

兄弟T725DW打印机,打印时一切正常,纸张顺利输出,文字图像清晰,但偏偏在打印任务结束后,控制面板或电脑上弹出一个“无法打印 E3”的错误。这个场景是不是让你既困惑又恼火?明明能用,却总报错&am…

📅 2026/9/8 8:22:46
AI Agent开发实战:从核心概念到企业级多智能体架构

AI Agent开发实战:从核心概念到企业级多智能体架构

大家好,我是专注于AI应用开发的技术博主。最近在辅导团队和面试候选人时,发现很多开发者对AI Agent的理解还停留在“调用API”的层面,对于如何将其从概念验证推进到企业级商业化落地,以及如何应对面试中的深度问题,普遍…

📅 2026/9/28 16:19:48
MORE NEWS

更多资讯

📰

DirectX修复工具V4.1-4.3标准版+增强版:一键修复0xc000007b等运行库报错

简介:这份DirectX修复工具V4.1-4.3标准版增强版说明文档,面向遇到0xc000007b错误、游戏或软件提示缺少dll文件以及DirectX组件异常的Windows用户,也适合需要快速排查系统运行库问题的普通使用者。文档系统梳理了DirectX修复工具的核心功能、版…

📰

OpenGL太阳系模型:场景图+轨道相机+光照衰减实战

简介:这份资源面向计算机图形学初学者与OpenGL课程实践者,提供一套可直接编译运行的太阳系三维演示程序,用于理解球体建模、纹理映射与相机控制等核心概念。压缩包共60个文件,约8.28MB,包含cpp与h源码、vcxproj工程文件…

📰

0.5C磷酸铁锂集装箱储能系统方案设计:从电芯到10MW/20MWh电站

简介:10MW/20MWh储能项目技术方案是一份面向储能电站设计与工程实施的专业技术文档,适合储能系统工程师、电力设计人员及相关专业学生阅读,可作为同类规模项目方案编写的直接参考。资源为单个PDF文档,大小3.85MB,已有2…

📰

Delphi 调 Bartender 打印环境搭建与避坑指南

简介:这份资源面向使用 Delphi 进行桌面应用开发、并需要集成标签打印功能的开发者,重点解决在 Delphi 环境下调用 Bartender 实现标签设计与打印的问题。资源包内共 1 个 doc 文档,压缩后约 392KB,内容围绕 Bartender 的 ActiveX…

📰

DeepSeek V4 来了!超越 Claude Sonnet 4.5,用 TaoToken 对接 Claude Code 体验一把

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Agent-Reach:基于Python与CLI的AI Agent工具链开发实战

1. 项目缘起与核心定位第一次看到 Agent-Reach 这个标题,我下意识地把它拆成了两个部分:Agent 和 Reach。Agent 在当下的技术语境里几乎等同于 AI Agent,也就是能自主感知环境、做出决策并执行动作的智能体;Reach 则带有触达、延伸…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬