2015-07-02 4 views
1

Я хочу получить доступ к переменной из активности в классе BaseAdapter, с которым я установил ListView активности. Но я всегда получаю эту ошибку:Доступ к переменной активности из базового адаптера

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Integer.toString()' on a null object reference 

Эти соответствующие части моего кода:

public class GetAllEntrysListViewAdapter extends BaseAdapter { 

Integer markerID; 
PinboardActivity pinboard = new PinboardActivity(); 

public GetAllEntrysListViewAdapter(JSONArray jsonArray, Context context) { 
    this.dataArray = jsonArray; 
    this.context= context; 
    //I want to get the markerID variable from pinboardActivity: 
    markerID = pinboard.markerID; 
    inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 
//... 
public Cursor getLikes(DbHelper dbh) { 
    //The following line is the one the error occurs 
    String args[] = {markerID.toString(), pos}; 
    //... 
} 

ответ

0

Это потому, что markerID является null.
Проверьте следующую строку

//I want to get the markerID variable from pinboardActivity: 
    markerID = pinboard.markerID; 

pinboard.markerID Здесь возвращает нулевой объект.

+0

Но в pinboardActivity переменная не является нулевой – maidi

+0

Создается новый экземпляр активности! 'PinboardActivity pinboard = new PinboardActivity();' создает новую пустую активность, а 'markerID 'равно null. В идеале вы никогда не должны создавать новый экземпляр такого действия. Лучший способ - передать «markerID» в конструкторе адаптера. – Antrromet

+0

Спасибо, это мне очень помогло! – maidi

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