使用String变量创建新的mainscreen实例

时间:2012-01-06 19:29:26

标签: java blackberry

我想在将屏幕名称传递给的方法中有如下所示的行:

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

如何在行中使用屏幕的String名称:

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

2 个答案:

答案 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的代码中,您可以轻松地将其更改为PopupScreenScreen)并使公共构造函数不带任何参数。