设为首页 加入收藏

TOP

Android组件化探索与实践(三)
2019-09-01 23:13:17 】 浏览:64
Tags:Android 组件 探索 实践
组件自己的测试代码。当然我们还可以在src/main下面书写一些各个组件都可能使用到的通用代码,src/main的内容在其他productFlavor目录下是可以访问的。

在实际项目中,我会给每个组件程序写一个MainActivity,MainActivity里面很简单,就是一排按钮,每一个按钮对应着组件接口中的一个方法。这样开发时很方便测试,开发完成时至少也能够保证组件基本可用,不太会出现别人一调用你的组件就出错的情况。

最后,运行某个组件时,需要在AS的Build Variants中选择该组件定义的productFlavor

页面跳转

可以为每一个页面跳转定义一个接口方法:

public interface UserManagementInterface
{
    //跳转到用户信息页面
    String startToUserInfoPage(Context context);
}

然后在startToUserInfoPage的实现中实现具体的跳转逻辑。

现在android上主流的页面导航方式有三种:

  1. 不同的页面对应不同Activity类型

  2. 在Activity中使用Fragment导航,在Activity中同时

  3. 使用Activity导航,和第一种不同的是Activity只充当Fragment的容器

针对第一种导航方式,在直接使用Intent跳转就可以,当然使用当前流行的ARouter也行。

针对第二种导航方式,把把FragmentManager放到Common中可能是比较好的办法。如果有更好的办法,感谢分享。

我个人比较喜欢第三种导航方式,在项目中也是用的这种导航方式。第三种导航方式同时具备第一种和第二种导航方式的优点,当然它也有比较大的缺点。金无足赤,人无完人,选择合适的就好。

首先创建一个Activity用做Fragment的容器,比如就叫TheActivity。(命名规范中肯定不推荐用The,但是实际上项目中就这么个Activity,用The也不会造成什么理解困难)

TheActivity的启动参数至少要包含要包含的Fragment的名称(有了名称就可以通过反射创建Fragment),还要包含Fragment自身需要的参数。

核心代码很简单就像下面这样:

Fragment fragment = createFragment();//使用反射创建Fragment
getSupportFragmentManager().beginTransaction()
    .replace(fragmentContainerId, fragment)
    .commit();

有些东西核心思想很简单,但是实际项目中使用会暴漏很多问题。

比如需要在Activity中解析Intent参数,有多少个跳转你几乎就要写多少个解析方法,然后在Fragment中还要再解析一次。

人天性就不会喜欢做这种重复又毫无营养的事情,我抽空做了一个基于注解和AnnotationProcessor的方案,可以简化参数的传递和解析工作。感兴趣的同学可以移步:https://github.com/a3349384/FragmentLauncher

最后欢迎关注我的博客:http://zhoumingyao.cn/

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Android使用google breakpad捕获.. 下一篇安卓开发笔记(十七):帧动画制..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目