拥有大量相同结构Activity的项目精简经验—— ReUsableActivity
简介
一个可以重复利用的Activity.通过设置不同的Fragment加入到一个可复用的Activity中实现代码的精简。
这个仓库可以用来精简项目中拥有大量重复的AppBar布局的Android App。
介绍
一直以来,大家对臃肿的Activity就不是很喜欢,都在试图减少Activity的数量,通过利用Fragment来实现代码的精简和提高运行效率。这个仓库就是设计了一个可以重复利用的Actvity,用填充Fragment的方式来进行代码精简。大大减少了Activity的数量。
同时,我承认这个只是一种重复利用的思想,至于更优雅的实现方式还请各位指教。
最后效果如下:

以下代码来获取通用Activity向外界展示的式样。fragmentType声明了加载哪一种Fragment,title声明了Activity应该显示的title.
// 获取启动该Result的Intent
Intent intent = getIntent();
// 获取该intent所携带的数据
Bundle data = intent.getExtras();
// 从Bundle包中取出数据
fragmentType = data.getInt("fragmentType");
title = data.getString("title");
以下代码来说明要加载的Fragment.是由传入的fragmentType来确定的。
switch (fragmentType) {
case 0:
title = "空白界面";
fragment = new BaseFragment();
break;
default:
/
fragment = new TestFragment();
// 把参数传给fragment。
fragment.setArguments(data);
break;
}
其他的交给ReUsableActivity来实现。即是由FragmentManager来管理。和普通的Activity中显示Fragment原理相同,因此不做详细介绍,可参见代码。
上面Demo的代码是在Fragment中点击向ReUsableActivity传参数用来显示title,同时新的ReUsableActvity向新的Fragment传数据用来Fragment的展示。
在实际利用中,在需要用ReUsableActivity时传递给ReUsableActivity参数并且打开此Activity即可。
上面的项目的结构如下,虽然有众多的Acitvity显示,但是代码中却只有两个Acitvity.
结语
尽可能进行代码复用,来精简项目,这个是项目中的一个小小的经验,分享出来,希望大家能提供一个更好的解决方案。
项目已经开源,仓库在https://github.com/fuxuemingzhu/ReUsableAcitvity。希望大家指教。
拥有大量相同结构Activity的项目精简经验—— ReUsableActivity的更多相关文章
- DeepLearning.ai学习笔记(三)结构化机器学习项目--week2机器学习策略(2)
一.进行误差分析 很多时候我们发现训练出来的模型有误差后,就会一股脑的想着法子去减少误差.想法固然好,但是有点headlong~ 这节视频中吴大大介绍了一个比较科学的方法,具体的看下面的例子 还是以猫 ...
- 老大说新项目的结构和 xxx 项目一样就可以了,我 ……(使用 Maven Archetype 快速创建项目)
前言 又要开发新项目了,还是创建新项目,怎么办?老大说按照 xxx 项目的结构创建一个新项目就可以了. 公众号:liuzhihangs,记录工作学习中的技术.开发及源码笔记:时不时分享一些生活中的见闻 ...
- Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码)
Visual Studio 2015开发Qt项目实战经验分享(附项目示例源码) 转 https://blog.csdn.net/lhl1124281072/article/details/800 ...
- 关于写SpringBoot+Mybatisplus+Shiro项目的经验分享四:部署到阿里云
框架: SpringBoot+Mybatisplus+Shiro 简单介绍:关于写SpringBoot+Mybatisplus+Shiro项目的经验分享一:简单介绍 阿里云开放必要端口,mysql与t ...
- 关于写SpringBoot+Mybatisplus+Shiro项目的经验分享三:问题2
框架: SpringBoot+Mybatisplus+Shiro 简单介绍:关于写SpringBoot+Mybatisplus+Shiro项目的经验分享一:简单介绍 搜索框是该项目重要的一环,由于涉及 ...
- 关于写SpringBoot+Mybatisplus+Shiro项目的经验分享二:问题1
框架: SpringBoot+Mybatisplus+Shiro 简单介绍:关于写SpringBoot+Mybatisplus+Shiro项目的经验分享一:简单介绍 添加时,如果失败,不能正确跳转 c ...
- 吴恩达《深度学习》-课后测验-第三门课 结构化机器学习项目(Structuring Machine Learning Projects)-Week1 Bird recognition in the city of Peacetopia (case study)( 和平之城中的鸟类识别(案例研究))
Week1 Bird recognition in the city of Peacetopia (case study)( 和平之城中的鸟类识别(案例研究)) 1.Problem Statement ...
- 1-5Tomcat 目录结构 和 web项目目录结构
对应我的安装路径: web项目目录结构
- Cocos2dx-3.1.1 冒险01----> 文件夹结构、新项目project创建并执行
windows开发环境:window7.vs2012.python2.7.6 Cocos2d-x 3.1.1的完整文件夹例如以下:比起曾经的2.x的版本号来说分类更规范了 watermark/2/te ...
随机推荐
- perl FileHandle 模块使用
打开多个文件时必备啊 1 use FileHandle; 2 3 my (%index,%fh); 4 # 创建句柄,这里利用gzip 压缩下 5 foreach my $k(keys %index) ...
- URI和URL的区别(转)
转载:http://www.cnblogs.com/gaojing/archive/2012/02/04/2413626.html 这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java B ...
- Django向数据库批量插入数据
# 如何向数据库一次性插入多条数据 # 方法一:效率极低,不推荐使用 for i in range(1000): models.Book.objects.create(title=f'第{i}本书') ...
- C++你不知道的事
class A { public: A() { cout<<"A's constructor"<<endl; } virtual ~A() { cout&l ...
- Docker镜像相关操作
批量导入镜像 ll *.tgz|awk '{print $NF}'|sed -r 's#(.*)#docker load -i \1#' |bash 批量打tag docker images | se ...
- day03 部署NFS服务
day03 部署NFS服务 NFS的原理 1.什么是NFS 共享网络文件存储服务器 2.NFS的原理 1.用户访问NFS客户端,将请求转化为函数 2.NFS通过TCP/IP连接服务端 3.NFS服务端 ...
- DBeaver客户端工具连接Hive
目录 介绍 下载安装 相关配置 1.填写主机名 2.配置驱动 简单使用 主题设置 字体背景色 介绍 在hive命令行beeline中写一些很长的查询语句不是很方便,急需一个hive的客户端界面工具 D ...
- 在 Qualys SSL Labs SSL 测试中获得 A+ 评级的秘技 2021 版
本系列文章将阐述主流应用交付控制器和主流 Web 服务器如何运行 HTTP/2 和 TLSv1.3 协议,以及如何在 SSL Test 中获得 A+ 评级. 请访问原文链接:https://sysin ...
- Linux学习 - 脚本安装包
脚本安装包不是独立的软件包类型,常见安装的是源码包
- 如何设置eclipse下查看java源码
windows--preferences--java--installed jres --选中jre6--点击右边的edit--选中jre6/lib/rt.jar --点击右边的 source att ...