экраны в ежевике - PullRequest
       3

экраны в ежевике

0 голосов
/ 03 января 2011

как я могу перемещаться по экранам при нажатии кнопки. есть две кнопки, предыдущая и следующая. когда я нажимаю предыдущую кнопку, отображается экран screan1, а когда я нажимаю следующий, отображается экран screan2 и т. д.

Ответы [ 3 ]

1 голос
/ 03 января 2011

Есть несколько способов сделать это.Библиотека пользовательского интерфейса в Blackberry будет поддерживать для вас стек экранов, поэтому вы можете:

1) при нажатии кнопки создать новый экран и поместить его в стек, затем удалить старый экран ипусть это будет сбор мусора;или

2) при нажатии кнопки определите, существует ли экран для этой кнопки в стеке, и переместите его вперед, или создайте новый, как указано выше.В этом случае вам не нужно удалять экраны, но если у вас много сложных экранов, у вас могут быть не хватает ресурсов.

См.(Экран экрана) и net.rim.device.api.ui.UiApplication.popScreen (Экран экрана)

0 голосов
/ 07 июня 2013

Привет! Я создал класс SwitchScreenController, чтобы легко переключаться между экранами.

public class SwitchScreenController {

public void switchHomeScreen() {

}

public void switchToHomeScreen() {
    //UiApplication.getUiApplication().pushScreen(new HomeScreen());
}

public void switchToProgressingScreen() {
}

public void switchToNextScreen(MainScreen targetScreen) {
    UiApplication.getUiApplication().pushScreen(targetScreen);
}

public void switchToPreviousScreen() {
        UiApplication.getUiApplication().popScreen(
           UiApplication.getUiApplication().getActiveScreen());
}

}

Вы можете использовать его в любом месте, как это.

new 
public class SwitchScreenController {

public void switchHomeScreen() {

}

public void switchToHomeScreen() {
    //UiApplication.getUiApplication().pushScreen(new HomeScreen());
}

public void switchToProgressingScreen() {
}

public void switchToNextScreen(MainScreen targetScreen) {
    UiApplication.getUiApplication().pushScreen(targetScreen);
}

public void switchToPreviousScreen() {
        UiApplication.getUiApplication().popScreen(
           UiApplication.getUiApplication().getActiveScreen());
}

}

Вы можете вернуться, используя

new SwitchScreenController().switchToPreviousScreen();

и перейти к следующему экрану, используя

new SwitchScreenController().switchToNextScreen(new NextScreen());
0 голосов
/ 14 января 2011

Вот простая реализация:


import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.ButtonField;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.MainScreen;

public class NavigateScreen extends MainScreen implements FieldChangeListener {

    private ButtonField previousButton;
    private ButtonField nextButton;

    public NavigateScreen() {
        add(new LabelField("Some content"));

        previousButton = new ButtonField("Previous", ButtonField.CONSUME_CLICK);
        previousButton.setChangeListener(this);

        nextButton = new ButtonField("Next", ButtonField.CONSUME_CLICK);
        nextButton.setChangeListener(this);

        add(previousButton);
        add(nextButton);
    }

    public void fieldChanged(Field field, int context) {
        if (field == previousButton) {
            UiApplication.getUiApplication().popScreen(NavigateScreen.this);
            UiApplication.getUiApplication().pushScreen(new PreviousScreen());
        }
        if (field == nextButton) {
            UiApplication.getUiApplication().popScreen(NavigateScreen.this);
            UiApplication.getUiApplication().pushScreen(new NextScreen());
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...