View создается несколько раз с помощью Gluon
Если вы меняете представление несколько раз, иногда в Viewfactory создается новый вид. (Я использую Afterburner, кстати, но это не должно быть проблемой) Это происходит на каждом устройстве (настольном и мобильном)
Следующий код в методе 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)
1 ответ
Если вы проверите любой из мобильных образцов Gluon или создадите новый проект с помощью плагина 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
каждый раз, когда вы переключаетесь с предыдущего, просто звоните:
MobileApplication.getInstance().switchView(SECONDARY_VIEW);