2016-11-02 5 views
0

Я пытаюсь создать простое приложение JavaFX, которое переключается между 2 экранами, в котором вы можете изменить сохраненные переменные, и тот, который просто отображает , у меня есть функция, определенная в основной метод, который просто возвращает NullPointerException при компиляции проекта в журнал ошибок, это говорит, что его на линии, которая читаетПолучение ошибки java.lang.NullPointerException при назначении значений массиву определяемого пользователем класса

taskList[i].setTaskName(taskNames[i]); 

Я попробовал, добавив, если заявление, подобное тому, для раздел для метода getTechAssigned, потому что эта переменная будет постоянно изменяться, а переменная taskName останется неизменной. Я просто не знаю, почему он идет вверх, вот полный код:

объявления переменных

Button assignTask, finalizeTask; 
    FlowPane pane1, pane2; 
    Scene scene1, scene2; 
    Stage theStage; 
    String[] taskNames = {"Notes", "Paging", "Event Mgmt - Early", 
          "Event Mgmt -Late", "Airhub 2DA", "Airhub 1DA" 
          "GSSD", "GSSI", "GSSRR", "Publishing", 
          "Check Holdovers", "Radio", "PTI Walkoff", "Phones 
          1300"}; 
    task[] taskList = new task[taskNames.length]; 
    GridPane taskGrid = new GridPane(); 

функция, которая вызывает ошибку:

public void initializeTasks() { 
    for (int i = 0; i < taskList.length; i++) { 
     taskList[i].setTaskName(taskNames[i]); 
     Text t = new Text(taskList[i].getTaskName()); 
     taskGrid.setRowIndex(t, i); 
     taskGrid.setColumnIndex(t, 0); 

     if(taskList[i].getTechAssigned() == null) { 
      taskList[i].setTechAssigned("Not Assigned"); 
      } 

     Text r = new Text(taskList[i].getTaskName()); 
     taskGrid.setRowIndex(r, i); 
     taskGrid.setColumnIndex(r, 1); 
     } 

    } 

ответ

0
task[] taskList = new task[taskNames.length]; 

TaskList в настоящее время имеет 10 нулевых элементов в соответствии с вашим INIT, так как вы используете setTaskName на null его давая ошибку.

Сначала добавьте объект в список задач, а затем используйте его.

taskList[i]=new task(); 
taskList[i].setTaskName(taskNames[i]); 
0

Вы создали массив, но Ждут» В этом ничего не поделаешь. Ваш массив содержит taskNames.length элементов, все из которых равны нулю.

Вы должны инициализировать все элементы массива, как:

taskList[i] = new task(); 

до линии, где вы установили taskList[i].setTaskName(taskNames[i]);