【发布时间】:2016-08-03 02:36:47
【问题描述】:
我正在加载几个 FXML 文件并尝试在它们各自的控制器中设置成员。但是在一些神秘的情况下,我无法指向加载的 FXML 的控制器起初我以为只有控制器实现了“初始化”,但经过一些测试,事实并非如此。
这是一些代码和核心堆栈:
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);
}
}
核心堆栈:
pointer adress = null
Caused by: java.lang.NullPointerException
at controller.ControllerManager.showMainView(ControllerManager.java:40)
at view.LoginController.handle(LoginController.java:49)
... 58 more
【问题讨论】:
标签: java javafx controller fxml