Использование строковой переменной для создания нового экземпляра главного экрана - PullRequest
0 голосов
/ 06 января 2012

У меня есть строка, подобная следующей в методе, которому я хочу передать имя экрана:

UiApplication.getUiApplication().pushScreen(new TheatreScreen());

как использовать строковое имя экрана в строке:

UiApplication.getUiApplication().pushScreen(new myStringVar());

Ответы [ 2 ]

1 голос
/ 06 января 2012

Вы можете использовать отражение как:

Class screenClass = Class.forName("net.mypackage.ScreenA");
MainScreen screen = (MainScreen)screenClass.newInstance();
UiApplication.getUiApplication().pushScreen(screen);

Конечно, вам нужно поместить этот код в блок try/catch. А также ваши классы экрана должны расширяться MainScreen (потому что в коде, который я использовал MainScreen, вы можете легко изменить его на PopupScreen или Screen) и иметь открытый конструктор без каких-либо параметров.

1 голос
/ 06 января 2012

Вы можете передать только экземпляр Экран в pushScreen () .Если вы хотите выдвинуть экран в стеке, указав имя (String), тогда вам нужно реализовать свой собственный менеджер экрана, который должен сопоставить String с экземпляром Screen.Что-то вроде следующего псевдокода:

public void pushScreen(String screenName) {
    if (screenName.equals("ScreenA") {
        UiApplication.getUiApplication().pushScreen(new ScreenA());
    } else if (screenName.equals("ScreenB") {
        UiApplication.getUiApplication().pushScreen(new ScreenB());
    } 
    // rest of the codes....    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...