我想在将屏幕名称传递给的方法中有如下所示的行:
UiApplication.getUiApplication().pushScreen(new TheatreScreen());
如何在行中使用屏幕的String名称:
UiApplication.getUiApplication().pushScreen(new myStringVar());
答案 0 :(得分:1)
您只能将Screen的实例传递给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....
答案 1 :(得分:1)
您可以使用反射:
Class screenClass = Class.forName("net.mypackage.ScreenA");
MainScreen screen = (MainScreen)screenClass.newInstance();
UiApplication.getUiApplication().pushScreen(screen);
当然,您需要将此代码放入try/catch
块。此外,您的屏幕类应该扩展MainScreen
(因为在我使用MainScreen
的代码中,您可以轻松地将其更改为PopupScreen
或Screen
)并使公共构造函数不带任何参数。