如果您多次更改视图,有时会在Viewfactory中创建一个新的视图。(我正在使用Afterburner btw,但这不应该是问题)这种情况发生在每个设备上(台式机和移动端)
以下代码位于init方法中
addViewFactory(viewname, () -> {
return new ExampleView();
})上面的例子产生了同一视图的多个实例(这破坏了我的一些演示者)
可以在下面看到快速修复,但不应该是必要的。
ExampleView view = null;
addViewFactory(viewname, () -> {
if (view == null) {
view = (View) new ExampleView.getView();
}else{
//comment out the line below to see that this is really happening
//throw new RuntimeException("Created View multiple times");
}
return view;
});编辑:
仍然使用switchView(String)进行视图更改
发布于 2016-04-11 21:12:48
如果你检查任何Gluon移动samples,或者如果你用Gluon插件创建一个新项目,你会注意到addViewFactory调用只在init()方法上完成一次,它在Application.start()方法之前被调用一次。
@Override
public void init() {
addViewFactory(PRIMARY_VIEW, () -> new PrimaryView(PRIMARY_VIEW));
addViewFactory(SECONDARY_VIEW, () -> new SecondaryView(SECONDARY_VIEW));
} 在幕后,当您调用addViewFactory时,视图实例被缓存在视图映射中。这保证了您不能多次添加相同的视图,并且可以在任何时候获取给定视图的实例。
因此,您不需要在每次从以前的View切换时都创建一个a,只需调用:
MobileApplication.getInstance().switchView(SECONDARY_VIEW);https://stackoverflow.com/questions/36548908
复制相似问题