无法用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。
接着我又发现如果第一次启动会启动轮播图,用轮播图的fragment的startWithPop方法启动EcBottomDelegate()居然可以启动,调试发现此时的getFragmentManager()居然不为null,于是发现:
此时代码if判断走的是preFragment.getSupportDelegate().start(to); 看提示信息可知preFragment是我们的启动图(LauncherDelegate),而之前没有轮播图,LauncherDelegate直接启动的时候preFragment为null,这倒也没错,难道startWithPop一定要已经有两个fragment才能使用???老师是这个框架确实是这样的,还是我哪里有代码打错了?另外不用startWithPop用start方法能正常打开。
1回答
-
傅猿猿
2018-01-05
你看看proxyactivity,里面有一个处理,其实直看看最新的activity代码,接start就好,你去群文件,说明视频很快出,有改动的
012018-01-05
相似问题