无法用starwithpop方法启动fragment?

来源:13-9 支付宝接入和实现支付

qq_Zoyix_0

2018-01-02

老师,当启动图结束后用户登录了,需要启动EcBottomDelegate时,发现

getSupportDelegate().startWithPop(new EcBottomDelegate());

无法启动EcBottomDelegate(),模拟器上显示空白,AS提示信息:

LauncherDelegate's FragmentManager is null,  Please check if LauncherDelegate is destroyed!

跟踪源码后发现,代理Activity启动fragment的start()或startWithPop最后都是通过代理fragment的start方法启动的,于是通过Debug发现getFragmentManager()返回为null,因此报:LauncherDelegate's FragmentManager is null。

http://img.mukewang.com/szimg/5a4b3ceb0001835a09230124.jpg

接着我又发现如果第一次启动会启动轮播图,用轮播图的fragment的startWithPop方法启动EcBottomDelegate()居然可以启动,调试发现此时的getFragmentManager()居然不为null,于是发现:

http://img.mukewang.com/szimg/5a4b3e3600017aa612550607.jpg

此时代码if判断走的是preFragment.getSupportDelegate().start(to); 看提示信息可知preFragment是我们的启动图(LauncherDelegate),而之前没有轮播图,LauncherDelegate直接启动的时候preFragment为null,这倒也没错,难道startWithPop一定要已经有两个fragment才能使用???老师是这个框架确实是这样的,还是我哪里有代码打错了?另外不用startWithPop用start方法能正常打开。

写回答

1回答

傅猿猿

2018-01-05

你看看proxyactivity,里面有一个处理,其实直看看最新的activity代码,接start就好,你去群文件,说明视频很快出,有改动的

0
1
qq_Zoyix_0
有个什么处理?我直接复制了你的proxyActivity代码还是不行.是不是这个开源框架本身的问题啊??什么接start?老师的意思是不用startWithPop改start了?
2018-01-05
共1条回复

Android通用框架设计与完整电商App开发

从第一行代码开始教你,通用且一键式配置的框架设计并轻松实现完整电商App

2028 学习 · 1182 问题

查看课程