5 Stimmen

Wie navigiert man auf dem Blackberry zum vorherigen Bildschirm zurück?

In Blackberry kann ich von einem Bildschirm zum nächsten navigieren, aber ich kann nicht zurück zum vorherigen Bildschirm navigieren. Wenn ich im Emulator die Escape-Taste drücke, wird die gesamte Anwendung beendet. Gibt es eine andere Taste im Emulator, um zum vorherigen Bildschirm zu gelangen, oder einen Code, um zurück zu navigieren? Wenn Sie es wissen, helfen Sie mir bitte.

16voto

Maksym Gontar Punkte 22730

Wie Andrey sagte, gibt es einen Anzeigestapel, wenn Sie also Bildschirme verschieben, ohne sie zu löschen, bleiben sie im Stapel, so dass beim Schließen des aktuellen Bildschirms der vorherige Bildschirm automatisch angezeigt wird, und wenn es keinen vorherigen Bildschirm gibt, wird die Anwendung geschlossen.

Es ist jedoch nicht gut, viele Bildschirme in einem Anzeigestapel zu halten, daher können Sie eine Art Stapel innerhalb von Bildschirmen implementieren, um die Navigation manuell zu handhaben.

Abstrakte Bildschirmklasse für die Implementierung von Bildschirmstapeln:

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);
    }
}

Beispiel für den ersten Bildschirm:

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());
        }
    }
}

Beispiel für einen zweiten Bildschirm:

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;
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X