【问题标题】:Pop to home screen弹出到主屏幕
【发布时间】:2011-12-05 02:58:23
【问题描述】:

在我的应用程序中,我一个接一个地喜欢一些屏幕,我需要随时弹出到主屏幕。有什么方法可以找出活动屏幕是第一个吗?或者,可能有什么功能可以弹出到根屏幕而无需循环弹出到上一个屏幕?


编辑 换句话说,我需要我的应用程序在点击黑莓“后退”按钮时转到上一个屏幕(它无需任何额外代码即可执行此操作),然后转到屏幕,用户优先从我的用户界面单击“主页”按钮,查看何时启动此应用程序

【问题讨论】:

  • 你到底想做什么???你想从屏幕外的任何地方退出应用程序吗??
  • 不,我要进入屏幕,用户首先看到何时启动应用程序。
  • 在所有屏幕上添加一个菜单go to home screen,然后在该菜单的运行方法中按下主屏幕
  • 这对黑莓来说很常见吗?记忆呢?这会溢出屏幕的堆栈吗?
  • 不溢出,你可以弹出活动屏幕并推送新屏幕,这样前一个屏幕就不会在堆栈上

标签: blackberry


【解决方案1】:

这可以随时随地为您提供帮助:

在启动类中写这个方法(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)调用此方法,然后它会弹出堆栈中的所有屏幕。

【讨论】:

  • 那里有一个小错误:popupScreens() 弹出所有屏幕,包括第一个屏幕。我们需要弹出screenCount - 1 屏幕
【解决方案2】:

首先,您需要组织您的屏幕、应用程序逻辑,并明确定义您希望在 UI 堆栈中显示哪些屏幕以及不希望显示哪些屏幕。对于那些不需要在 UI 堆栈上的屏幕,您可以在另一个屏幕被推到它上面时自动关闭它们:

class SplashScreen extends FullScreen
{

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

【讨论】:

  • tnx 响应。我需要我的应用程序在单击黑莓“返回”按钮时转到上一个屏幕(它无需任何额外代码即可执行此操作),然后转到屏幕,用户首先看到何时启动此应用程序,单击我的用户的“主页”按钮界面。所以,如果我会像你一样伤心,无论如何它都会进入主屏幕。也许我可以找出用户以某种方式选择的返回的情况,以及“close();”仅在按下“主页”按钮时才显示所有屏幕?
  • 嗯,您要问的是非常特定于应用程序的东西。您的应用程序是否需要 10 个屏幕,如果需要,如何管理这些屏幕之间的导航,哪些屏幕是瞬态的等 - 这些问题对您的应用程序来说是主观的,最好由可用性专家解决。回到您的问题,您不必为响应您的 BACK 屏幕的屏幕覆盖 onObsured 。据我了解您的问题,您似乎在顶部和要显示的屏幕之间有一个 extra 屏幕。这需要重新设计 UI。咨询设计专家!
  • 哦,要是我能做到这一点就好了……你看,我不是在开发新的应用程序:我是从 iPhone 移植旧的应用程序。设计 vas 专注于 iPhone。所以,我对黑莓的布局和导航管理着迷。像某种野蛮人一样编码,用自定义框架放置空对象。只是为了让按钮和图像在正确的位置......
  • @SentineL -:) 我可以同情你。虽然我们已经走出丛林,但野生动物正潜伏在黑暗中随时向你扑来。战斗必须继续!
【解决方案3】:

将菜单添加到屏幕以提供Gotohomescreen 类似的选项。只需从显示堆栈中弹出活动屏幕,然后通过 menus's run() 方法推送您的主屏幕。为高效。如果你想回到你的应用程序,你可以弹出活动屏幕,它会从你来的那个屏幕转到那个屏幕。假设你已经添加了一个backButton,你可以覆盖按钮的 fieldchanged 方法并在 fieldchanged方法做这样的事情。

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

在这里使用记忆是你的答案

堆栈顶部的屏幕是 BlackBerry 设备用户看到的活动屏幕。当 BlackBerry 设备应用程序显示屏幕时,它会将屏幕推送到堆栈顶部。当 BlackBerry 设备应用程序关闭屏幕时,它会从堆栈顶部移除屏幕并显示堆栈中的下一个屏幕,并根据需要重新绘制它。每个屏幕在显示堆栈中只能出现一次。 BlackBerry JVM throws a runtime exception 如果 BlackBerry 设备应用程序推送到堆栈的 Screen 已经存在。 当 BlackBerry 设备用户完成与屏幕的交互时,BlackBerry 设备应用程序必须从显示堆栈中删除屏幕,以便 BlackBerry 设备应用程序有效地使用内存

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多