2014-02-26 33 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