的新实例,我有这样的方法,下面一条线,我想在屏幕名称传递到:使用字符串变量创建mainscreen
UiApplication.getUiApplication().pushScreen(new TheatreScreen());
我怎么在使用屏幕的字符串名称行:
UiApplication.getUiApplication().pushScreen(new myStringVar());
的新实例,我有这样的方法,下面一条线,我想在屏幕名称传递到:使用字符串变量创建mainscreen
UiApplication.getUiApplication().pushScreen(new TheatreScreen());
我怎么在使用屏幕的字符串名称行:
UiApplication.getUiApplication().pushScreen(new myStringVar());
只能传递的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....
您可以使用诸如反射:
Class screenClass = Class.forName("net.mypackage.ScreenA");
MainScreen screen = (MainScreen)screenClass.newInstance();
UiApplication.getUiApplication().pushScreen(screen);
当然,你需要把这个代码放到try/catch
块。而且你的屏幕类应该扩展为MainScreen
(因为在我使用的代码MainScreen
中,你可以很容易地将其更改为PopupScreen
或Screen
)并且具有不带任何参数的公共构造函数。