2011-05-10 69 views

回答

2

當彈出屏幕B時,它將調用onUiEngineAttached(boolean)函數,將參數設置爲false。如果屏幕B保持對屏幕A的引用,則可以觸發任何需要的更新。

另一種方法是設置自己的偵聽器,其中屏幕B將提供事件,屏幕A將偵聽事件。再次,您可能會從onUiEngineAttached(布爾)函數中觸發事件。

+0

謝謝,我會嘗試onEngineAttached(boolean)方法。 onExposed()的作品爲 – redline 2011-05-10 13:37:06

+1

。我認爲這是最好的解決方案。 – redline 2011-05-19 09:36:50

-1

我認爲這可以使用YUI History Manager來完成。

2

您可以使用回調模式。詳情請查閱我的another post。在屏幕B上的任何用戶界面事件(例如按下按鈕)後,屏幕B會根據需要運行通過任何參數的回調。通過這種方式,您的屏幕A保持其原始/清潔界面。

可以檢測到設備「後退」 BTN按與此代碼:

protected boolean keyChar(char c, int status, int time) { 
    if (c == Characters.ESCAPE) { 
     // .. run callback here .. 
     close(); // actually close the Screen B 
     return true; 
    } 
    return super.keyChar(c, status, time); 
} 
+0

我已經使用'keyChar()'。我只是將屏幕A的引用傳遞給屏幕B,並且調用了A的更新方法。它可以工作,但我不知道它是否是傳遞引用的好方法。 我真的不知道回調是做什麼的。但是我在屏幕A中使用ListField和ListCallBack。我意識到,當我按下屏幕B上的按鈕時,會調用ListCallback的'drawListRow()'方法。所以我認爲回調在這裏是有用的。我會研究它,謝謝。 – redline 2011-05-10 13:34:53

+0

只是要清楚:我不是在談論ListCallBack。這完全是另一個概念。傳遞引用的作品好吧,它只是創建了一個過於單一的代碼,以後很難再改變。 – 2011-05-10 13:44:02

+0

是的,我知道它不會是一個ListCallBack的課程。我知道傳遞參數的問題,我會改變它。 – redline 2011-05-10 13:57:42

1

B屏被彈出堆棧的,所以它會得到onUiEngineAttached()回調。但是你對屏幕A感興趣,它將得到不同的回調 - Screen.onExposed()。

+0

謝謝,我也會嘗試這個功能。 – redline 2011-05-10 22:49:05

相關問題