Лично я бы предложил использовать ArrayList вместо массива для этого, но это всего лишь личные предпочтения. Вот статья о том, что https://www.w3schools.com/java/java_arraylist.asp
Что касается проблемы, то у вас проблема в том, что у вас есть объявленный массив частных строк, и вы пытаетесь присвоить ему значения в другой метод. Массив заполняется значениями по умолчанию null, так как это массив String. Причина, по которой вы получаете исключение, заключается в том, что он возвращает это значение по умолчанию, а не назначенное вами значение.
Вы все еще можете использовать закрытый массив, но вы захотите объявить его как stati c и использовать метод stati c для добавления значения к нему. Таким образом, когда вы добавите значение к нему, оно будет возвращаться так, как вы ожидаете. Это гораздо более простой пример, но он показывает, как этого добиться:
public class Test {
private static String activity[] = new String[5];
public void addValue() {
activity[0] = "Yo";
}
public static void main(String[] args) {
Test test = new Test();
test.addValue();
System.out.println(activity[0]);
}
}
Что касается заданного вами c кода, я бы предложил объявить и Activity [], и ActivityID [] как массивы stati c , Затем вам нужно будет создать объект в вашем основном методе для вызова вашего значения. Ваши изменения будут выглядеть так:
private static String activity[] = new String[5];
private int activityID[] =new int[5];
Затем в вашем основном методе добавьте:
window.initialize(); //where window is your class object you declared
Это даст вам желаемый результат. Я бы также предложил переименовать ваш метод, который вы назвали так же, как ваш класс.