2014-02-26 13 views
0

我使用pushGlobalScreen()从应用程序的背景创建全局屏幕,但创建全局屏幕后我无法删除它。从pushGlobalScreen()创建的全局屏幕不与popScreen()(黑莓)一起使用

下面是我的监听我的代码:

UiApplication.getUiApplication().requestForeground(); 
UiApplication.getUiApplication().pushGlobalScreen(new QuestionGScreen(), 1, UiApplication.GLOBAL_QUEUE); 

的QuestionGScreen具有与随后创建使用相同的代码另一个全球屏幕(减去requestForeground)如果按YES,如果没有按一些简单的按钮然后,我有

UiApplication.getUiApplication().requestBackground(); 
UiApplication.getUiApplication().popScreen(); 

我知道popScreen()不带参数的折旧,但使用popScreen()UiApplication.getUiApplication().getActiveScreen()给了我一个非法参数异常。

是否有一些其他方式来删除全局屏幕,或者我做错了弹出全局屏幕关闭?

感谢,奎因

回答

0

全球屏幕不被黑莓管理的应用,像PopupupScreen或普通屏幕的一部分。因此,当您按全局屏幕时,无法在应用程序显示堆栈中找到它,也不会在将应用程序置于后台时“背景”。

如果您希望在推送过程中与全局屏幕交互,则必须自己保留对屏幕的引用。

记住与对话屏幕交互时(例如,如果您正在处理按钮按下),您将不会在您自己的应用程序上下文中执行,因为屏幕未在您自己的上下文中运行。因此,为了与您的应用程序进行交互,我建议您尝试全局事件。你会发现在这些位置的好文章:

Global Events article

个人而言,我会尽量避免使用全球屏幕,除非你真的需要带的东西给用户的关注,无论他们目前正在做的事情 - 试想你的用户正在处理一些重要的电子邮件,他或她真的需要看看你的屏幕?尝试其他形式的通知。

你能用普通的弹出屏幕实现你想要的吗?请注意,全局屏幕并不特殊,全局屏幕只是以不同方式推送。

更新

你做此评论:

我必须道歉,这触发我重新检视你的,你说原来的职位“时,电话屏幕关闭屏幕消失”(其我错过了)“这是我的听众的代码”。

这里的问题是,实际上,您的侦听器代码正在电话应用程序的上下文中运行。现在,电话应用程序将在电话结束时置于后台。我想,这就是为什么你的弹出屏幕正在消失。当然,全球的并不是因为它们不属于电话应用程序的一部分。

在听众中接受的做法是尽可能少地处理它们,而是使用全局事件(请参阅前面的链接)将上下文切换到自己的应用程序。您的应用程序将在后台运行,将收到全局事件,将显示弹出屏幕,但要查看弹出屏幕,您必须requestForeground(),这会隐藏手机屏幕。没什么大不了的,因为屏幕本身就会隐藏起来......

+0

我已经完成了你在最后一点提到的内容,并将屏幕更改为简单的弹出屏幕,但遇到了弹出式菜单显示出来,我可以浏览链接(是和否按钮),但弹出窗口中产生的所有屏幕将在大约3秒钟内消​​失。我必须通过一个论点来避免屏幕消失如此之快?迄今为止,非常感谢您的帮助。 – Br0k3nL1m1ts

+0

实际上,我认为我发现了错误,当电话屏幕关闭时屏幕消失。我将尝试查找在电话屏幕关闭时发生的事件,而不是呼叫结束时使用该事件。 – Br0k3nL1m1ts

+0

优秀!我设法按照你说的方式设置全球活动,并且运行非常顺利!我确信还有一些错误,但核心功能在那里。非常感谢您的帮助! – Br0k3nL1m1ts