ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

在 Fragment 中使用 LoadingAndRetryManager 的完整教程:加载中与重试状态优雅切换

在 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),仅供参考
返回列表