黑莓屏幕

时间:2011-01-03 08:02:36

标签: user-interface blackberry

如何在按钮点击时导航屏幕。 有两个按钮,上一个和下一个。 当我点击上一个按钮时,将显示一个screan1,当我按下一个按钮时,将显示一个screan2,依此类推。

3 个答案:

答案 0 :(得分:1)

有几种不同的方法可以做到这一点。 Blackberry上的UI库将为您保留一叠屏幕,因此您可以:

1)按下按钮时,创建一个新屏幕并将其推入堆栈,然后移除旧屏幕并将其收集垃圾;或

2)按下按钮时,确定堆叠上是否已存在该按钮的屏幕并将其移至前面,或者如上所述创建新按钮。在这种情况下,您不必删除屏幕,但如果您有许多复杂的屏幕,则可能会耗尽资源。

请参阅:net.rim.device.api.ui.UiApplication.pushScreen(屏幕界面)和net.rim.device.api.ui.UiApplication.popScreen(屏幕界面)

答案 1 :(得分:0)

这是一个简单的实现:


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

答案 2 :(得分:0)

您好我已经创建了一个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());