2011-12-05 32 views
1

在我的应用我最喜欢的一些画面此起彼伏,我需要弹出到主屏幕的任何时间。有没有什么办法可以找出活动屏幕是第一个?或者,可能有什么功能可以弹出到根屏幕,而不会弹出到以前的循环?流行主屏幕


编辑在不同的话,我需要我的应用程序去前面的屏幕上点击黑莓“后退”按钮(它做到这一点没有任何额外的代码),并进入到屏幕上,用户首先看到的开始时,在点击该应用程序从我的用户界面“Home”按钮,

+0

要真正地做什么???你想从任何你的屏幕退出应用程序? – BBdev

+0

不,我想要去屏幕上,用户首先看到什么时候开始应用。在所有屏幕 – SentineL

+0

添加菜单'去家里screen',只是推主屏幕在菜单中的run方法 – BBdev

回答

6

这可以帮助您任何时间,任何地方必须从BlackBerry设备时,用户完成与他们的互动显示堆栈中删除屏幕:

写这个方法在启动类(StartUp.java):

public static void popupScreens() 
{ 
    int screenCount = UiApplication.getUiApplication().getScreenCount();//Gives how many screens are active state in background; 
    for (int i = 0; i < screenCount; i++) 
    { 
     Screen screen = UiApplication.getUiApplication().getActiveScreen(); 
     UiApplication.getUiApplication().popScreen(screen); 
    } 
} 

,并在与类名(EX:StartUp.popupScreens)任何地方调用这个方法在任何地方,然后我t弹出堆栈中的所有屏幕。

+0

看起来不错。我明天再试。感谢您的回复 – SentineL

+0

实际上有+1的不错的黑客,它也会适合您的需求 – BBdev

+1

还有一个小bug:popupScreens()包含第一个屏幕。我们需要弹出'screenCount - 1'屏幕 – SentineL

1

首先,你需要组织你的屏幕,应用程序逻辑,明确你想成为的UI栈什么屏幕和那些不。对于那些并不需要是对UI栈屏幕,就可以自动解雇他们时,另一个屏幕在它的上面推:

class SplashScreen extends FullScreen 
{ 

protected void onObscured() 
{ 
    close(); 
} 
} 
+0

tnx for responce。我需要我的应用程序去点击黑莓“返回”按钮(它没有任何额外的代码这样做)前往屏幕,并进入屏幕,用户首先看到何时启动此应用程序点击我的用户的“首页”按钮接口。所以,如果我会像你一样悲伤,无论如何它都会进入主屏幕。可能是我可以找出用户以某种方式选择返回什么样的情况,并且“close();”只有当“home”按钮被按下时所有的sceens? – SentineL

+0

那么,你问的是非常特定于应用程序的东西。你的应用程序是否需要10个屏幕,如果是的话,那些屏幕之间的导航是如何管理的,哪些屏幕是短暂的等等 - 这些问题对你的应用程序是主观的,最好由可用性专家来解决。回到你的问题,你不必重写onObsured的屏幕,将回应你的BACK屏幕。正如我理解你的问题,你似乎在顶部和你想展示的之间有一个_extra_屏幕。这需要重新设计用户界面。请教设计专家! –

+0

哦,只要我能做到这一点...你看,我没有开发一个新的应用程序:我正在从iPhone移植旧的应用程序。设计专注于iPhone。所以,我要用黑莓的布局和导航管理来疯狂。编码像某种野蛮人,用自定义框架来放置空的物体。只是为了使按钮和图像在正确的地方... – SentineL

0

添加菜单在屏幕上进行有选择Gotohomescreen一些这样的事。只需从显示堆栈中弹出活动屏幕,然后从menus's run()方法中将主屏幕推开。高效。如果你想回到你的应用程序,你可以弹出激活屏幕会跳转到屏幕从那里您可以come.Let假设你已经添加了backButton你可以重写按钮的fieldchanged方法和fieldchanged方法做像这样的东西。

if(field == backbutton) { 
      UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen());    
     } 

这里使用内存是你的答案

在堆栈顶部的屏幕是激活屏幕BlackBerry设备用户看到。当BlackBerry设备应用程序显示屏幕时,会将屏幕推到堆栈的顶部。当BlackBerry设备应用程序关闭一个屏幕时,它会从堆栈顶部移除屏幕,并在堆栈中显示下一个屏幕,并根据需要重新绘制屏幕。每个屏幕只能在显示堆栈中出现一次。如果BlackBerry设备应用程序压入堆栈的屏幕已存在,则BlackBerry JVM throws a runtime exception。 BlackBerry设备应用程序,以便BlackBerry设备应用程序使用内存高效