2012-01-06 110 views
0

的新实例,我有这样的方法,下面一条线,我想在屏幕名称传递到:使用字符串变量创建mainscreen

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

我怎么在使用屏幕的字符串名称行:

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

回答

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

您可以使用诸如反射:

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

当然,你需要把这个代码放到try/catch块。而且你的屏幕类应该扩展为MainScreen(因为在我使用的代码MainScreen中,你可以很容易地将其更改为PopupScreenScreen)并且具有不带任何参数的公共构造函数。

相关问题