Shadow
Shadow copied to clipboard
插件支持Fragment吗?宿主是Activity,插件是fragment,然后宿主使用插件的fragment这样可以吗?
我们的项目是这样的:主界面就是一个viewPager,viewPager里面有几个fragment,我们想把fragment做成插件的形式,这样的话,我们新开发一个新的Fragment,在主宿主APP不用升级的情况下,下载这个fragment的插件进行更新,加入到viewPager里面,这样能做到吗?
目前的代码不支持。可以参考#319 之前的讨论。
宿主Activity加载插件Fragment,如果二者的Resource是不同的,即Context是不同的,我认为这个方向基本上是不用考虑的。因为从Fragment的设计上来看,它就是Activity的代码分片,是Activity代码的一部分。从逻辑上来说,Fragment和Activity的Context必须是一个。如果违背这个设计,我们很难做出完美的实现。比如通过反射修改私有的mHost
字段。
主界面就是一个viewPager,viewPager里面有几个fragment
如果假设主界面这个Activity没有什么自己的资源,只包含一个ViewPager,那为什么不把这个Activity整体动态化了呢?
从技术实现上来说,Shadow的Activity和Fragment都是依附于宿主Activity的,就是那个PluginContainerActivity。
不 fragment是碎片,在activity得到拼接。fragment理论上应该不关心activity是谁
设计理念是这样没错。但是Fragment的实现代码并没有和Activity解耦开来。它强依赖了Activity的Context。
如果你能写一个不依赖Activity的Context也能attach到那个Activity上面的Fragment,那Shadow就能按照你的方案自动重构插件的代码做到同样的事。
@Daimhim 你的问题解决了吗?我有同样的需求,请问怎么解决
@njzhangsan2013 fragment本质是activity上的一个view碎片,但是通过和activity绑定使其具有了生命周期,宿主activity去加载插件中的fragment确实是违背了shadow的设计原则,理论上不支持也不应该支持,但是事在人为,在实际业务场景中这种需求很常见,通过一些特殊的方法是可以实现的,只需要解决如下问题即可: 1、插件fragment解析布局时需要使用自己的context 2、fragment中涉及到activity的操作需要需要使用宿主的activity
这是来自QQ邮箱的假期自动回复邮件。 您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。
这是来自QQ邮箱的假期自动回复邮件。 您好,我最近正在休假中,无法亲自回复您的邮件。我将在假期结束后,尽快给您回复。