[英]ArrayList null pointer exception
我創建了一個數組列表和一個 ListView。 我打算遍歷 ListView,並檢查它們是否被選中,然后將對象(使用 ListView.getItem())添加到我的數組列表中。 但是我得到一個 NullPointerException。 ArrayList people_selected,在類的頂部聲明如下:
ArrayList<PeopleDetails> selected_people;
還有我的代碼:
for (int i = 0; i < people_list.getCount(); i++) {
item_view = people_list.getAdapter().getView(i, null, null);
chBox = (CheckBox) item_view.findViewById(R.id.checkBox);//your xml id value for checkBox.
if (chBox.isChecked()) {
selected_people.add((PeopleDetails) people_list.getItemAtPosition(i));
}
}
for(PeopleDetails person : selected_people){
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(person.number, null, sms_message, null, null);
}
///and now need to write party to file.
我在線路上遇到錯誤
for(人物詳細信息人:selected_people)
說“NullPointerException”。 我認為這意味着 arraylist 為空,並且無法弄清楚為什么它應該為空。 我在班級最高處宣布錯誤了嗎? 還是我的選擇和添加方法有問題?
ArrayList<PeopleDetails> people_selected;
您聲明並從未初始化。 只需在使用前初始化它。 否則NullPointerException
。
嘗試初始化它
ArrayList<PeopleDetails> people_selected= new ArrayList<PeopleDetails>();
你錯過了
people_selected = new ArrayList<PeopleDetails>();
您已聲明但未初始化。
代碼顯示您聲明了變量,但沒有顯示您初始化它,如下所示:
people_selected = new ArrayList<PeopleDetails>();
您聲明了people_selected但您使用的是selected_people ?!
永遠不會被填滿...
增強的for循環大致就是這個結構
for (Iterator<T> i = someList.iterator(); i.hasNext();) {
}
一個未初始化的 Collection ArrayList<PeopleDetails> selected_people;
指的是null
。
如果在未初始化的集合上啟動增強的 for 循環,它將拋出NullPointerException
因為它在空引用上調用迭代器someList.iterator()
。
另一方面,如果你有一個像這樣初始化的集合
ArrayList<PeopleDetails> selected_people = new ArrayList<>();
您會注意到增強的 for 循環不會拋出任何NullPointerException
因為someList.iterator()
現在返回一個迭代器,而i.hasNext()
返回false
只是這樣循環就不會繼續進行。
PS:增強的for循環骨架取自here 。
發生錯誤是因為您尚未初始化數組
添加這個解決了我的問題
selected_people = new ArrayList<PeopleDetails>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.