2011-04-26 52 views
0

我的查詢是如何使用屏幕對象訪問堆疊屏幕上的字段?如何使用屏幕對象訪問屏幕上的字段(UiApplication.getUiApplication()。getActiveScreen())

確切的問題如下:

我有一個屏幕,該屏幕具有一個文本字段(客戶端名),當用戶點擊該字段,應用程序將推向一個新的屏幕,這將允許用戶搜索中遠程數據庫使用MyWebSerivces。並且當用戶從搜索結果中選擇一個客戶端時,我想在當前屏幕上用用戶選擇的文本在前一個屏幕上設置文本字段。

我試過pushScreen(新屏幕(「文本)),這可能是結果,如果我只想做一次這個操作,但這不是我的選擇,因爲還有兩個這樣的字段將轉到其他屏幕從Web服務獲取數據,如果我每時間我推新屏幕,然後每個按鍵屏幕操作後,我只會得到一個字段設置與所需的文字

回答

0

我已經找到了答案,我的問題。解決方案是在我的問題中,但起初我無法找到它。 解決方案是非常簡單的 當我寫我想用

UiApplication.getUiApplication().getActiveScreen() 

這幾乎是正確的方式和我進行得十分正確的方向,但我缺少的是「我不投屏幕的東西(即我剛剛從棧頂取回)到它的類型 只有我應該做的事情是「應該鑄造屏幕到它的類型。這樣

UiApplication.getUiApplication().posScreen(this) 
(MyScreen1) UiApplication.getUiApplication().getActiveScreen() 

現在我能夠訪問檢索到屏幕上的所有字段(MyScreen1)

事情要記住

  1. 確保ü投屏幕,它的類型只否則bb會給你找不到資源錯誤

在堆棧上使用屏幕的好處

  1. u可以使用已經創建的屏幕從堆棧中沒有必要建立新的
  2. 如果u將即使創建新的屏幕會在內存中堆積和將消耗越來越多的內存沒有用的,它的(使習慣彈出屏幕,如果它是沒有用的,而不是留在棧上))
  3. 沒有必要建立任何靜態變量,因爲ü可以設置所有領域的其他屏幕
1

這不是一個黑莓(或任何特定的編程語言)相關的問題,這是一個應用程序架構和常識的問題。如果一個屏幕應該更改Field的另一個屏幕上,然後將Field的引用傳遞到將改變它的屏幕。

+0

日Thnx馬上爲該rply和是啊,它可能不是一個黑莓的問題,但我正在開發一個黑莓應用程序,我想在BB社區我會找到答案。但你建議在這種情況下「通過參考」的方式,我必須推動屏幕,我不希望新的屏幕被推...反正我找到了我的問題的答案只在我的問題..chiill – MrPandav 2011-04-28 05:27:18

0

您好,我曾經有過同樣的問題,我不喜歡這樣的:

屏蔽1

    ------------------ 
    Client Name  | text field  | 
        ------------------ 

當用戶點擊這個文本字段或任何按鈕,按下屏幕2 在屏幕2當用戶選擇一個特定的價值然後你這樣做。

1)在主類中取一個靜態變量,例如clientName。 2)設置這個變量的值。 3)彈出激活屏幕

UiApplication.getUiApplication().getActiveScreen(); 

當這種代碼被稱爲則u回來屏蔽1 現在,在屏幕1的方法被稱爲

public void onExposed() 
    { 
     //here u can set the text in textfield using the static variable 
     invalidate(); // for repainting 
    } 
+0

它的一個很好的理念使用靜態變量並將其設置onExpsoed事件,但靜態值對我來說不是最好的選擇,當我們談論高效的內存使用情況,我的應用程序是移動應用程序。而且,我已經在我的問題本身中找到了我的問題的答案。 – MrPandav 2011-04-28 05:20:00

+0

oh dats gr8你得到ans,應該使用ya靜態變量來避免內存問題。你必須張貼你的答案,以便其他人也可以得到幫助 – Swati 2011-04-28 05:32:21