Cześć,

mam problem z przełączaniem scen w tym samym stage w JavaFX. Problem w tym ,że Stage na którym chce operować jest nullem. Dopiero zaczynam z JavaFX, siedzę nad tym już kilka godzin i nie mam pojęcia jak można by to obejść. W głównej klasie która rozszerza aplikację jest wywoływana metoda która ładuje pierwszą scenę, z tym wszystko ok. Tylko po zalogowaniu gdy chcę załadować inną metodą z tej klasy drugi widok (zamiast ekranu logowania) na tym samym stage wywala null pointer. Przewertowałem całe stackoverflow, bez rezultatu. Chodzi o metodę showCarChoosePage.

package com.vmht.address;
 
import java.io.IOException;
 
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
 
public class MC extends Application {
    public Scene scene;
    private GridPane grid;
    public AnchorPane content;
    public BorderPane rootLayout;
 
    public Stage primaryStage;
 
    @Override
    public void start(Stage primaryStage) {
 
        this.primaryStage = primaryStage;
        this.primaryStage.setTitle("VMHT v0.1");
 
        try {
            FXMLLoader loader = new FXMLLoader(MC.class.getResource("view/RootLayout.fxml"));
            rootLayout = (BorderPane) loader.load();
            Scene scene = new Scene(rootLayout);
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        showLoginPage();
        //showCarChoosePage();
 
    }
    public void showLoginPage(){
 
        try {
            FXMLLoader loader = new FXMLLoader(MC.class.getResource("view/LoginView.fxml"));
            content = (AnchorPane) loader.load();
            rootLayout.setCenter(content);
 
            LoginController controller = loader.getController();
            controller.setMC(this);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
    }
 
    public void showCarChoosePage(){
 
        try {
            FXMLLoader loader = new FXMLLoader(MC.class.getResource("view/CarChooseView.fxml"));
            AnchorPane content = (AnchorPane) loader.load();
            Scene CarChooseScene = new Scene(content);
            primaryStage.setScene(CarChooseScene);
            primaryStage.show();
            rootLayout.setCenter(content);
 
            CarChooseController controller = loader.getController();
            controller.setMC(this); 
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
 
    }
 
    /**
     * Returns the main stage.
     * @return
     */
    public Stage getPrimaryStage() {
        return primaryStage;
    }
 
    public static void main(String[] args) {
        launch(args);
    }
}

I leci to, linia 62 to primaryStage.setScene(carChooseScene):

Caused by: java.lang.NullPointerException
at com.vmht.address.MC.showCarChoosePage(MC.java:62)
at com.vmht.address.LoginController.LoginSuccess(LoginController.java:82)
at com.vmht.address.LoginController.userExists(LoginController.java:62)
... 57 more