не могу переключить вид на глюон мобайл - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь разработать мобильное приложение на глюонном мобильном (eclipse plugin v2.6.0, MultiViewProject), контент не актуален. В основном, согласно документации по глюонам, я создал первый вид, который выглядит как экран входа в систему. Все было хорошо, но когда я попытался задействовать другое представление, вызываемое этим логином, это не сработало.

Я использовал метод switchView, как я нашел в документации по глюону и здесь, в 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 построен аналогично классу StartView, поэтому я думаю, что нет необходимости делиться им слишком, особенно потому, что этот код никогда не вызывается при запуске программы.

Заранее спасибо за любую помощь!

кстати: g.p(String, int) только для отладки

...