0
複数のFXMLファイルを読み込み、それぞれのコントローラにメンバーを設定しようとしています。しかし、いくつかの不思議なケースでは、ロードされたFXMLのコントローラーを指すことができません。最初は、「Initialize」を実装しているコントローラだと思っていましたが、いくつかのテストの後ではそうではありません。新しく読み込まれたFXMLのJavaFXコントローラのアドレスを指すことができません
public void showLoginScreen() {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/Login.fxml"));
mMainScene.setRoot((Parent) loader.load());
LoginController controller = loader.<LoginController>getController();
//I am able to reach the controller from here
controller.initManager(this);
} catch (IOException ex) {
Logger.getLogger(ControllerManager.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void showMainView(String sessionID) {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/Main.fxml"));
mMainController = loader.<MainController>getController();
mMainScene.setRoot((Parent) loader.load());
//TODO : I am not able to reach the controller from here
System.out.println("pointer adress = " + mMainController);
mMainController.initManager(this);
} catch (IOException ex) {
Logger.getLogger(ControllerManager.class.getName()).log(Level.SEVERE, null, ex);
}
}
コアスタック:ここ
は、いくつかのコードとコアスタックである第2のケースで
pointer adress = null
Caused by: java.lang.NullPointerException
at controller.ControllerManager.showMainView(ControllerManager.java:40)
at view.LoginController.handle(LoginController.java:49)
... 58 more
テストおよび検証、感謝(...答えを受け入れるように9分以上が必要です) –