目前在tab启用了lazy="true"
,在xml里,我将fragment放到tab标签后,在控制其中就会提示Component cannot be injected because it is located inside of lazy tab "xxxx.xxx"
,这样的话,我的fragment也就没有办法使用了。然而现在我有6个tab,每个tab中有多个fragment,加起来一共二十多个fragment,这会导致页面打开速度慢,所以想和tabsheet的懒加载一起使用。
你在controller中是不是以注入的方式用到了 lazy tab 里面的组件?
对的,是这样的
这样不行的:
当视图打开时,延迟加载标签页内的组件还不存在,因此无法注入到控制器,也无法在视图生命周期事件方法中获取。只有在用户打开标签页后,才能访问这些组件。通过 SelectedChangeEvent 事件的处理方法可以检测用户选择了哪个标签页,然后使用
UiComponentUtils.getComponent()
方法获取需要的组件。
所以这个问题可能跟fragment没有关系,只是获取组件出错。
2 个赞
好的,我试一下
我试过用UiComponentUtils.getComponent()
获取fragment了,可以获取到,但是获取到的fragment内的组件依旧为null,我是需要一个一个去获取吗?