Я использую JavaFX, чтобы показать представление из моей игры.Nullpointer при инициализации представления JavaFX
Взгляд загружается, когда я вызываю метод в моем классе MainApp
:
public class MainApp extends Application {
//fields
public MainApp() {
this.game = new Game();
}
//lots of other methods
public void showGameView() {
try {
System.out.println(game.getPlayer().getCurrentRoom());
FXMLLoader loader = new FXMLLoader();
loader.setLocation(MainApp.class.getResource("view/GameView.fxml"));
AnchorPane GameView = (AnchorPane) loader.load();
rootLayout.setCenter(GameView);
GameViewController controller = loader.getController();
controller.setMainApp(this);
} catch (IOException e) {
e.printStackTrace();
}
}
public Game getGame() {
return game;
}
The Game
объект сохраняет некоторую информацию и прочее. Контроллер выглядит следующим образом:
public class GameViewController {
private MainApp mainApp;
@FXML
public void initialize() {
mainApp.getGame(). ... //do something else
}
public void setMainApp(MainApp mainApp) {
this.mainApp = mainApp;
}
Я всегда делал это таким образом. Когда контроллер загружается, объекты MainApp
устанавливаются в контроллер, и я могу работать с ним. Но теперь я получаю Nullpointer, когда вызывается mainApp.get...
. Поле mainApp
равно null. Я действительно не знаю, что это за сделка, потому что, как я сказал, это сработало так в других проектах.
Это похоже на довольно хорошее и простое решение. И я думаю, что его более чистый стиль, чем то, что я впервые подумал в комментарии к другим ответам. И тебе спасибо! – Master1114