在黑莓中,我可以从一个屏幕导航到下一个屏幕,但无法导航回上一个屏幕。在模拟器中按退出键将终止整个应用程序。模拟器中是否有其他键可以转到上一个屏幕或有任何代码可以返回?如果你知道请帮助我。
正如安德烈所说,有一个显示堆栈,所以如果你推入屏幕而不弹出它们,它们将保留在堆栈中,因此关闭当前屏幕,上一个屏幕将自动显示,如果没有上一个屏幕。屏幕上,应用程序将关闭。
然而,在显示堆栈中容纳许多屏幕并不好,因此您可以在屏幕内部实现某种堆栈,以手动处理导航。
用于屏幕堆栈实现的抽象屏幕类:
public abstract class AScreen extends MainScreen {
Screen prevScreen = null;
void openScreen(AScreen nextScreen) {
nextScreen.prevScreen = this;
UiApplication.getUiApplication().popScreen(this);
UiApplication.getUiApplication().pushScreen(nextScreen);
}
void openPrevScreen() {
UiApplication.getUiApplication().popScreen(this);
if (null != prevScreen)
UiApplication.getUiApplication().pushScreen(prevScreen);
}
}
第一个屏幕示例:
public class FirstScreen extends AScreen implements FieldChangeListener {
ButtonField mButton = null;
public FirstScreen() {
super();
mButton = new ButtonField("Go second screen", ButtonField.CONSUME_CLICK);
mButton.setChangeListener(this);
add(mButton);
}
public void fieldChanged(Field field, int context) {
if (mButton == field) {
openScreen(new SecondScreen());
}
}
}
第二个屏幕示例:
public class SecondScreen extends AScreen implements FieldChangeListener {
ButtonField mButton = null;
public SecondScreen() {
super();
mButton = new ButtonField("Go first screen", ButtonField.CONSUME_CLICK);
mButton.setChangeListener(this);
add(mButton);
}
public void fieldChanged(Field field, int context) {
if (mButton == field) {
openPrevScreen();
}
}
public boolean onClose() {
openPrevScreen();
return true;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)