2011-12-05 75 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設備應用程序使用內存高效