首页 > 解决方案 > 如何使用特定片段开始活动但活动不依赖于片段?

问题描述

我想启动一个作为通用片段宿主的活动,该活动可以显示我想传递给它的任何片段。我知道我可以做一些switch-caseorif-else并使用 some Stringor int fromIntent创建相应Fragment的 . 但这将依赖于具体Fragment,我想知道是否有办法在不依赖具体片段的情况下实现它?

标签: androidandroid-fragmentsandroid-activity

解决方案


这里应该采用一种设计模式,例如FactoryMethod,解耦主机Activity和每个个体之间的依赖关系Fragment。大致可以如下图:

在此处输入图像描述

在上面的类图中,您的主机活动将仅依赖于工厂而不是每个单独的片段。

笔记:

  1. Fragment createFragment(String fragmentDescriptor)是一个静态方法,返回类型是父类Fragment,而不是子类型。

  2. 片段创建逻辑应在工厂内部处理,以便您的主机活动将摆脱此创建逻辑。


推荐阅读