请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

无法用starwithpop方法启动fragment?

老师,当启动图结束后用户登录了,需要启动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。

https://img1.sycdn.imooc.com//szimg/5a4b3ceb0001835a09230124.jpg

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

https://img1.sycdn.imooc.com//szimg/5a4b3e3600017aa612550607.jpg

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

正在回答 回答被采纳积分+3

1回答

傅猿猿 2018-01-05 10:46:56

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

0 回复 有任何疑惑可以回复我~
  • 提问者 qq_Zoyix_0 #1
    有个什么处理?我直接复制了你的proxyActivity代码还是不行.是不是这个开源框架本身的问题啊??什么接start?老师的意思是不用startWithPop改start了?
    回复 有任何疑惑可以回复我~ 2018-01-05 21:30:04
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信