Я также просто использую описанный выше метод проталкивания к стеку экранов, но в дополнение к этому я также передаю ссылки на экраны внутри моего стека в качестве параметра для новых экранов.
Если у вас есть какие-либо общедоступные методы (которые могут, например, обновлять содержимое экрана и т. Д.), Их можно вызывать из других экранов вашего стека, используя этот вид ссылок. Например.
Экран 1
public class MyScreen1 extends MainScreen
{
private LabelField content;
public MyScreen1(){
content = new LabelField(“this is the original content”);
add(content);
}
public void UpdateScreen(String newContent){
content.setText(newContent);
}
private void PushScreen{
MyScreen2 screen = new MyScreen2( (MyScreen1)UiApplication.getUiApplication().getActiveScreen());
UiApplication.getUiApplication().pushScreen(screen);
}
}
Экран 2
public class MyScreen2 extends MainScreen
{
private MyScreen1 originalScreen
public MyScreen2(MyScreen1 originalScreen){
this.originalScreen = originalScreen
public MyScreen1 () {
LabelField content = new LabelField(“Screen1 will now be changed.”);
add(content);
UpdateScreen1();
}
private void UpdateScreen1(){
originalScreen.UpdateScreen(“This is new content”);
}
}
В этом примере после извлечения MyScreen2 содержимое MyScreen1 будет изменено. Это полезно, если у вас есть сценарий, в котором вы отображаете сведения об объекте, а затем нажимаете экран редактирования для объекта, который возвращает к более старой версии объекта.