Fragment 还是 Activity?Android Studio MVP 模板中两种页面的生成差异与选型建议
Fragment 还是 ActivityAndroid Studio MVP 模板中两种页面的生成差异与选型建议【免费下载链接】Android-Studio-MVP-templateAndroid MVP template for Android Studio项目地址: https://gitcode.com/gh_mirrors/an/Android-Studio-MVP-template在 Android 开发中Fragment 还是 Activity是很多新手的项目第一课。Android Studio MVP 模板Android-Studio-MVP-template用一套现成的代码生成器把这个问题变成了点一下菜单的事在File New MVP下选择MVP Activity或MVP Fragment即可分别生成一个完整的 Activity 页面或一个可嵌入的 Fragment 页面并自动配好 View 接口、Presenter、Interactor 和 Dagger 2 注入的整套 MVP 骨架。本文带你弄清这两种模板各自生成什么、差在哪里以及你的页面到底该选哪一个。第 0 步先生成 MVP Boilerplate 基础层每个项目只做一次两个页面模板都依赖一组公共基类——BaseActivity、BaseFragment、BasePresenter、BaseInteractor以及 Presenter 持久化的PresenterLoader。它们由MVP Boilerplate模板生成入口见 MVPBoilerplate/template.xml。⚠️ 关键约束必须在根包目录root package上执行且每个项目只需执行一次。生成后记得把模板产出的App类配置为 AndroidManifest 中的 Application注入体系才能工作模板文件MVPBoilerplate/root/src/app_package/classes/App.java.ftl。MVP Activity一键生成自包含的完整页面选择MVP Activity模板定义MVPActivity/template.xml后按 MVPActivity/recipe.xml.ftl 的配方模板会一次性生成 9 个文件覆盖完整的 MVP 分层层次生成内容模板源文件视图层MainActivity继承BaseActivityactivity_main.xml布局Activity.java.ftl、activity_layout.xml.ftl视图契约MainView接口View.java.ftl控制层MainPresenterMainPresenterImplPresenter.java.ftl模型层MainInteractorMainInteractorImplInteractor.java.ftl注入层Dagger 2 的MainComponentMainModuleComponent.java.ftl、Module.java.ftlActivity 模板还有一个 Fragment 没有的特权它会自动把新页面合并注册进 AndroidManifest.xml见 MVPActivity/root/AndroidManifest.xml.ftl 的merge规则并且表单里提供了Launcher Activity 选项可让该页面成为应用启动入口见 MVPActivity/template.xml 中的isLauncher参数。布局默认命名也是activity_前缀符合 Android 命名惯例。MVP Fragment不碰清单、可嵌入的轻量页面MVP Fragment模板MVPFragment/template.xml生成的文件清单与 Activity 几乎一一对应差异体现在三处不修改 AndroidManifest配方 MVPFragment/recipe.xml.ftl 中没有 manifest 合并步骤因为 Fragment 本来就不需要注册没有 Launcher 选项Fragment 不能独立启动应用表单里自然没有这个参数布局命名不同默认前缀是fragment_且配方里不额外生成dimens.xml。生成的 Fragment 类模板MVPFragment/root/src/app_package/classes/Fragment.java.ftl继承的是BaseFragment而非BaseActivity其余 View / Presenter / Interactor / 注入层的结构与 Activity 完全一致——同一个 Presenter 契约可以无感地在两种视图间复用。一张表看清两种模板的核心差异对比项MVP ActivityMVP Fragment基类BaseActivityAppCompatActivityBaseFragmentandroidx Fragment自动注册 Manifest✅ 是❌ 否Launcher应用入口选项✅ 有❌ 无布局默认前缀activity_fragment_额外生成 dimens.xml✅ 有❌ 无能否独立启动✅ 能❌ 需宿主 Activity文件数量10 个含 manifest 合并8 个生命周期两者共享同一套 Presenter 保活机制无论选哪种页面Presenter 都会通过Loader 异步加载从而在屏幕旋转、Activity 重建时存活。这一逻辑封装在 BaseActivity.java.ftl 和 BaseFragment.java.ftl 中两者的回调时机完全一致。两个必须记住的新手陷阱mPresenter在onCreate/onViewCreated里一定是 nullLoader 是异步的业务逻辑请等onStart之后再写视图只在onStart→onStop期间对 Presenter 可见后台任务必须在onPresenterDestroyed中彻底停止避免内存泄漏。选型建议什么时候用哪个选 MVP Activity 的场景页面是应用的独立入口或一级导航页首页、登录页、设置页需要配置 Intent Filter、启动模式或作为应用图标入口页面之间跳转靠Intent希望每个页面自包含、可单独启动和测试。选 MVP Fragment 的场景页面是某个 Activity 内部的一块模块底部 Tab 页、ViewPager 翻页卡片同一个 Activity 要承载多个可切换视图或需要左右双栏布局平板适配希望复用同一套 View 契约把界面拆得更小、更独立。一句话结论独立整页、要进清单 →MVP Activity嵌入复用、灵活切换 →MVP Fragment。两者共用同一套 Boilerplate 基础层甚至可以同项目混用——先在根包生成一次 Boilerplate之后按页面性质各取所需即可。两个容易踩的坑必须从根包生成页面如果在子包上执行模板会在子包下重复生成整棵 MVP 目录树injection / presenter / interactor 全部再来一套这不是你期望的结果别在生命周期回调里直接调mPresenter生成代码中已用注释提醒Do not call mPresenter from here, it will be null!所有 Presenter 调用都放在onStart之后的安全窗口内。安装模板只需按 README.md 中的说明把MVPBoilerplate、MVPActivity、MVPFragment三个目录复制到 Android Studio 的templates/activities目录macOS 也可直接运行仓库根目录的 install.sh 脚本。【免费下载链接】Android-Studio-MVP-templateAndroid MVP template for Android Studio项目地址: https://gitcode.com/gh_mirrors/an/Android-Studio-MVP-template创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

C++ weak_ptr详解:打破循环引用,实现安全对象观察与缓存

C++ weak_ptr详解:打破循环引用,实现安全对象观察与缓存

1. 项目概述:为什么我们需要一个“弱”的指针?在C的智能指针家族里,std::shared_ptr和std::unique_ptr大家都很熟悉了,一个负责共享所有权,一个负责独占所有权。但当你开始构建稍微复杂一点的系统,尤其是涉…

2026/8/25 8:14:38 阅读更多 →
前后端大整数ID精度丢失:雪花算法ID在JavaScript中的解决方案

前后端大整数ID精度丢失:雪花算法ID在JavaScript中的解决方案

1. 项目概述:当ID从后端“旅行”到前端时,它“变胖”了最近在做一个用户中心模块,后端用的是经典的雪花算法生成分布式ID,数据库里存的是BIGINT,Java实体类里用的是Long。一切都运行得很完美,直到前端同事跑…

2026/8/25 8:14:38 阅读更多 →
Canvas图形引擎实战:数据驱动路口渠化图绘制与性能优化

Canvas图形引擎实战:数据驱动路口渠化图绘制与性能优化

1. 项目概述:从需求到实现的思路拆解最近在做一个交通仿真相关的项目,里面有个核心需求是要动态生成各种复杂的路口渠化图。所谓路口渠化,简单说就是通过画线、设置导流岛、划分车道这些手段,来引导车流、提高路口通行效率和安全性…

2026/8/25 8:14:38 阅读更多 →

最新新闻

大型项目如何让eslint-config-canonical提速10倍?--cache与实时Lint性能优化完整指南

大型项目如何让eslint-config-canonical提速10倍?--cache与实时Lint性能优化完整指南

大型项目如何让eslint-config-canonical提速10倍?--cache与实时Lint性能优化完整指南 【免费下载链接】eslint-config-canonical The most comprehensive ES code style guide. 项目地址: https://gitcode.com/gh_mirrors/es/eslint-config-canonical eslint…

2026/8/25 9:00:59 阅读更多 →
Orpheus-FastAPI常见坑与解决方案清单:从Python 3.12不兼容到GPU加速排查

Orpheus-FastAPI常见坑与解决方案清单:从Python 3.12不兼容到GPU加速排查

Orpheus-FastAPI常见坑与解决方案清单:从Python 3.12不兼容到GPU加速排查 【免费下载链接】Orpheus-FastAPI High-performance Text-to-Speech server with OpenAI-compatible API, 8 voices, emotion tags, and modern web UI. Optimized for RTX GPUs. 项目地址…

2026/8/25 9:00:59 阅读更多 →
大模型面试必备:Self-Attention机制深度解析与实践

大模型面试必备:Self-Attention机制深度解析与实践

1. 大模型面试核心知识体系概览最近两年,大模型技术以惊人的速度重塑了整个AI行业的技术栈。作为准备大模型相关岗位的候选人,必须系统掌握从基础理论到工程实践的完整知识体系。本系列将聚焦面试中最常被深挖的10个核心模块,首篇重点解析Tra…

2026/8/25 9:00:59 阅读更多 →
京东SP高薪Offer解析与面试晋升指南

京东SP高薪Offer解析与面试晋升指南

1. 京东SP开奖季:高薪Offer背后的逻辑与机会每年春招秋招季,互联网大厂的薪资开奖总能引发行业热议。今年京东SP(Special Offer)的薪资包最高达到20薪、年包52W的消息一出,立即在程序员圈子炸开了锅。作为经历过三次大…

2026/8/25 9:00:59 阅读更多 →
京东SP Offer薪资解析与面试准备指南

京东SP Offer薪资解析与面试准备指南

1. 京东SP Offer薪资解析与面试指南最近京东的SP(Special Offer)开奖结果在技术圈引发热议,最高可达20薪、年包52W的待遇确实让人心动。作为经历过多次大厂招聘季的老司机,今天就来拆解这份offer背后的薪资结构和面试要点&#xf…

2026/8/25 9:00:59 阅读更多 →
完整指南:adsec 从零跑通 NTLM 哈希攻击

完整指南:adsec 从零跑通 NTLM 哈希攻击

完整指南:adsec 从零跑通 NTLM 哈希攻击 【免费下载链接】adsec An introduction to Active Directory security 项目地址: https://gitcode.com/gh_mirrors/ad/adsec 一次深夜应急响应,取证工程师翻了整夜日志,结论是:这台…

2026/8/25 8:59:59 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述:从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”,这个名字对理工科学生来说,分量极重。每年,无数团队在三天三夜的时间里,为一个开放性问题绞尽脑汁,从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →