簡體   English   中英

ArrayList 空指針異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM