如何在按钮点击时导航屏幕。 有两个按钮,上一个和下一个。 当我点击上一个按钮时,将显示一个screan1,当我按下一个按钮时,将显示一个screan2,依此类推。
答案 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());