Обновление Все, что я хочу сделать, это просто сохранить значение метки в другом классе.Это моя самая большая проблема, и, похоже, ничего не работает.
Я работаю над проектом javafx в течение нескольких недель.Я почти закончил, но столкнулся с проблемой передачи информации на уроках.Через 2 дня я все еще не могу понять, почему это не сработает.Вот код ниже:
Класс, в котором я инициализирую данные:
@FXML
Label money;
@FXML
int holder;
@FXML
Label tst;
int currency;
BankData bank;
//this is where text for money label is set from user input
public void presetMoney(ActionEvent e) {
if(e.getSource() == ten) {
currency += 10;
money.setText(Integer.toString(currency));
}
//this is where I try to retrieve the value of money
public void testing() {
this.holder = Integer.parseInt(money.getText());
bank.storeData(holder);
tst.setText(Integer.toString(holder));
}
public int getTesting() {
return this.holder;
}
BankData.java (Класс, в котором я пытаюсь установить данные):
String data;
public void storeData(String data) {
this.data = data;
}
Но, конечно, я получаю эту ошибку:
Caused by: java.lang.NullPointerException
at application.TransactionScreenController.testing(TransactionScreenController.java:159)
... 58 more
Прежде чем я перенаправлюсь на какой-то пост NullPointer и получу голосование вниз, я просто хотел знать, почему моя переменная возвращает ноль при попытке сохранить ее в другом классе,Очевидно, что переменная "holder" не является нулевой, поскольку я проверил ее, установив для нее другую метку.
Вот изображение, которое поможет сделать его более ясным
Я успешнополучил текст от лейбла money и установил его в int holder.Затем я устанавливаю значение держателя для метки tst.Однако, когда я пытаюсь установить значение владельца другого класса, я получаю нулевой указатель.
РЕДАКТИРОВАТЬ Я инициализировал BankData bank = new BankData () и попытался изменить переменные на int.Я просто получаю 0 вместо нуля.
РЕДАКТИРОВАТЬ 2 Итак, я попробовал инъекцию FXML, и теперь я получаю исключение класса
public void trasComplete(ActionEvent e) throws IOException {
FXMLLoader loader = new FXMLLoader();
//methods to change screen not included because of irrelevance
BankData n = loader.getController();
n.storeData(holder);
}
Caused by: java.lang.ClassCastException: application.SecrurityScreenController cannot be cast to application.BankData
at application.TransactionScreenController.trasComplete(TransactionScreenController.java:173)
... 58 more