2012-06-28 5 views
2

я построил класс, чтобы имитировать C#-структуру:массива объектов класса в андроиде

public class Favourite { 
    protected String favName; 
    protected String favText; 
    protected String favDelay; 
    protected GeoPoint favPoint; 
    protected Uri favUri; 
} 

Я хочу создать массив этого класса:

Favourite[] fav; 

Когда я пытаюсь получить доступ к этому массив:

fav[s].favName = bufr; 

Я получаю исключение NullPointerException. bufr действительно содержит данные. Я отслеживал его вниз, чтобы получить доступ к массиву как следующий код:

fav[s].favName = ""; 

также производит NullPointerException.

Я искал высоко и низко для некоторого указания относительно того, разрешено ли мне то, что я делаю, но ничего не могу найти.

Я полагаю, мои вопросы:

Вы позволили создать массив объекта класса? Если да, то как вы относитесь к этому массиву?

Я знаю, что могу сделать это, используя пять отдельных массивов переменных, но я чувствую, что помещение их в класс дает лучшую структуру и является более элегантным (я люблю элегантность).

+0

Вы инициализировали fav [s], чтобы существовало имя favName? – BlackVegetable

ответ

8

Проблема в том, что fav[s] - null.

Я не знаю о C#, но в Java вы должны инициализировать элементы массива индивидуально; вы не можете просто объявить массив и получить его автоматически заполненным.

Вам нужно будет пройти через fav и заполнить его новыми объектами Favourite.

Либо назначить fav[s] = new Favourite() первый раз, когда вы используете fav[s] или инициализировать все сразу, делая

for (int i = 0; i < fav.length; i++) { 
    fav[s] = new Favourite(); 
} 
+0

В C#, если OP создал структуру, это будет тип значения, поэтому массив будет заполнен «пустыми» значениями. Это будет плохая идея для данного типа, заметьте - это не похоже на естественный тип ценности. Я попытаюсь преобразовать вас в C# завтра;) –

+0

Hah. С нетерпением жду этого. –

1

Вы должны поместить элементы в массив. Объявленный массив просто имеет нуль в каждом слоте; вам нужно сделать что-то вроде fav[s] = new Favourite().

3
Favourite[] fav = new Favourite[23]; // Allocate an array of 23 items 

Теперь у вас есть 23 из них!

Смежные вопросы