2011-10-06 73 views

回答

3

Screen.onExposed()将在前一个屏幕上调用,并且可以从那里刷新值。

+0

非常感谢,我也想知道我必须打电话刷新整个页面。 – NCG

+0

我不认为'Screen.onExposed()'是提问者的一个适当的回调函数,因为API表示当'这个屏幕的应用程序接收到前景'或'全局屏幕被弹出'时它也被调用。 –

+0

的确,这不是确切的问题。但是,如果要在屏幕堆栈中隐藏屏幕后保持屏幕最新,则onExposed实际上是进行更新的最佳事件。此外,您可以将初始加载数据和更新结合到一起,并将其与此事件结合。 –

2
class FirstScreen extends MainScreen { 

    private void refreshOnNextScreenClose() { 
     // some code to refresh the FirstScreen on NextScreen closure 
    } 

    private Runnable onNextScreenCloseCallback = new Runnable() { 
     refreshOnNextScreenClose(); 
    }; 

    // .. 
    // somewhere in the code where you create/push NextScreen 
    NextScreen nextScreen = new NextScreen(onNextScreenCloseCallback); 
    UiApplication.getUiApplication().pushScreen(nextScreen); 
    // .. 
} 

class NextScreen extends MainScreen { 

    private Runnable onCloseCallback; 

    public NextScreen(Runnable onCloseCallback) { 
     super(); 
     this.onCloseCallback = onCloseCallback; 
    } 

    public void close() { 
     super.close(); 
     if (onCloseCallback != null) onCloseCallback.run(); 
    } 
} 
+0

我想知道如何刷新屏幕上的特定药水 – NCG

+1

目前还不清楚“刷新屏幕上的特殊药水”是什么意思。如果你想简单地使一些'Field'无效,那么就在该字段上调用'Field.invalidate()'。 –