首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Gluon多次创建视图

使用Gluon多次创建视图
EN

Stack Overflow用户
提问于 2016-04-11 20:37:32
回答 1查看 278关注 0票数 0

如果您多次更改视图,有时会在Viewfactory中创建一个新的视图。(我正在使用Afterburner btw,但这不应该是问题)这种情况发生在每个设备上(台式机和移动端)

以下代码位于init方法中

代码语言:javascript
复制
addViewFactory(viewname, () -> {
    return new ExampleView();
})

上面的例子产生了同一视图的多个实例(这破坏了我的一些演示者)

可以在下面看到快速修复,但不应该是必要的。

代码语言:javascript
复制
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)进行视图更改

EN

回答 1

Stack Overflow用户

发布于 2016-04-11 21:12:48

如果你检查任何Gluon移动samples,或者如果你用Gluon插件创建一个新项目,你会注意到addViewFactory调用只在init()方法上完成一次,它在Application.start()方法之前被调用一次。

代码语言:javascript
复制
@Override
public void init() {
    addViewFactory(PRIMARY_VIEW, () -> new PrimaryView(PRIMARY_VIEW));
    addViewFactory(SECONDARY_VIEW, () -> new SecondaryView(SECONDARY_VIEW));
}    

在幕后,当您调用addViewFactory时,视图实例被缓存在视图映射中。这保证了您不能多次添加相同的视图,并且可以在任何时候获取给定视图的实例。

因此,您不需要在每次从以前的View切换时都创建一个a,只需调用:

代码语言:javascript
复制
MobileApplication.getInstance().switchView(SECONDARY_VIEW);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36548908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档