Проблема в том, что в методе инициализации поле selectedCourse имеет значение null или пусто, хотя метод setCourseDetails устанавливает его значение до загрузки сцены.
Вот фрагмент кода из моего кода CourseScreenController:
Код: Выделить всё
public class CourseScreenController implements Basics {
private String selectedCourse;
private String courseName;
// Setter method called when switching to this screen
public void setCourseDetails(String imageUrl, String courseName, String instructor, String duration, String description, String language) {
this.courseName = courseName;
selectedJSON(courseName); // Determine the course JSON path
}
public void selectedJSON(String courseName) {
if (courseName.equals("Java Programming")) {
selectedCourse = "src/main/data/courses_data/java.json";
} else if (courseName.equals("Python Programming")) {
selectedCourse = "src/main/data/courses_data/python.json";
} else if (courseName.equals("C++ Programming")) {
selectedCourse = "src/main/data/courses_data/cpp.json";
} else if (courseName.equals("WEB Programming")) {
selectedCourse = "src/main/data/courses_data/web.json";
} else {
System.out.println("Course not found!");
selectedCourse = null;
}
}
@FXML
public void initialize() {
System.out.println("Selected course: " + selectedCourse);
if (selectedCourse == null || selectedCourse.isEmpty()) {
System.err.println("Course path is not set. Defaulting to Python course.");
selectedCourse = "src/main/data/courses_data/python.json";
}
// Further logic to load sections and populate UI
}
}
Отлажено и проверено, что setCourseDetails вызывается и правильно устанавливает значение.
Проверил порядок выполнения и понял, что инициализация запускается первой.
1- Как я могу убедиться, что выбранный курс установлен правильно перед инициализацией логики?
2- Есть ли лучший способ передачи данных между контроллерами в JavaFX, чтобы избежать такие проблемы?
Поскольку я новичок в Java, буду очень признателен за любые объяснения или ресурсы для лучшего понимания этого.
Подробнее здесь: https://stackoverflow.com/questions/793 ... plications
Мобильная версия