我正在尝试使用gluon mobile(eclipse插件v2.6.0,MultiViewProject)开发移动应用程序,内容无关。通常,根据gluon文档,我创建了第一个视图,它似乎是登录屏幕。一切都很好,但是当我尝试使用此登录视图所调用的另一个视图时,它将不起作用。
我使用了switchView
方法,如在gluon文档和此处的stackoverflow中所发现的那样。根据这些消息来源,我的《准则》应该起作用,但不起作用。也许我在其余的代码中犯了另一个错误?
“主要”类(导入和包声明除外):
public class GluonApplication extends MobileApplication {
public static final String START_VIEW = HOME_VIEW;
public static final String LOGIN_VIEW = "Login View"; //new home
public static final String REG_VIEW = "Reg View";
public General g = new General();
@Override
public void init() {
g.p("init", 2);
StartView home = new StartView();
addViewFactory(START_VIEW, () -> home);
addViewFactory(LOGIN_VIEW, () -> new LoginView());
addViewFactory(REG_VIEW, () -> new RegView());
DrawerManager.buildDrawer(this);
}
@Override
public void postInit(Scene scene) {
Swatch.GREY.assignTo(scene);
scene.getStylesheets().add(GluonApplication.class.getResource("style.css").toExternalForm());
((Stage) scene.getWindow()).getIcons().add(new Image(GluonApplication.class.getResourceAsStream("/icon_kT_icon.png")));
}
类StartView
,其中包括登录视图:
public class StartView extends View {
public General g = new General();
public StartView() {
g.p("set HomeView",2);
getStylesheets().add(StartView.class.getResource("start.css").toExternalForm());
LoginSpace lspace = new LoginSpace();
setCenter(lspace);
}
@Override
protected void updateAppBar(AppBar appBar) {
appBar.setNavIcon(MaterialDesignIcon.MENU.button(e -> getApplication().getDrawer().open()));
appBar.setTitleText("Login");
appBar.setDisable(true);
appBar.setVisible(false);
}
class LoginSpace extends VBox {
TextField name;
TextField pass;
public LoginSpace() {
g.p("set LoginSpace",2);
HBox h = new HBox(10.0);
name = new TextField();
pass = new TextField();
Button login = new Button("Anmelden");
Button reg = new Button("Neu registrieren");
name.setFloatText("Nutzername");
pass.setFloatText("Passwort:");
login.setOnAction(e -> onLogin());
reg.setOnAction(e -> onReg());
h.getChildren().addAll(login, reg);
h.setAlignment(Pos.CENTER);
getChildren().addAll(name, pass, h);
KopfrechenTrainer.initKT();
setSpacing(25);
setAlignment(Pos.CENTER);
Insets pad = new Insets(20,50,20,50);
setPadding(pad);
}
private void onLogin() {
g.p("button_login pressed",2);
String name = this.name.getText();
String pass = this.pass.getText();
boolean logIn = KopfrechenTrainer.checkLogin(name, pass);
if (logIn) ;//HomeView aufrufen, Wenn nicht errormeldung
else {
Alert fault = new Alert(AlertType.NONE, "Nutzername oder Passwort ist nicht korrekt. " +
"Bitte versuche es erneut oder registriere dich neu.");
fault.showAndWait();
}
}
private void onReg() {
g.p("button_reg pressed", 2);
MobileApplication.getInstance().switchView("REG_VIEW");
}
}
}
如果我做对了,最后的代码行应将视图切换到REG_VIEW
类中也定义的视图。 GluonApplication
类的构建与类RegView
相似,因此我认为不必共享,尤其是因为在运行程序时永远不会调用此代码。
在此先感谢您的帮助!
btw:StartView
仅用于调试