簡體   English   中英

數組列表空指針異常-Android

[英]Array List Null Pointer Exception - Android

我試圖創建一個可檢索用戶喜歡的書報價的應用程序,但是我仍然堅持如何將這些信息顯示給用戶。 我創建了一個ArrayList來存儲所有信息。 但是,在顯示此信息時,我不斷收到錯誤消息:

java.lang.NullPointerException

當它嘗試執行代碼時

temp[i] = new HashMap<String,String>();

此類如下所示:

public class FavouriteQuotesActivity extends ListActivity {

    static final ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();

    private void getFavorites() {
        DataBaseHelper myDbHelper = new DataBaseHelper(this);

        String favorites [] = myDbHelper.getFavourites();

        if(list.size() > 0)
        {
            list.removeAll(list);
        }

        for(int i = 0;i < favorites.length; i++)
        {
            String quotes = favorites[i];
            String[] quoteArray = quotes.split(":");
            HashMap<String,String> temp[] = null; 

            temp[i] = new HashMap<String,String>();
            temp[i].put("Author",(quoteArray[2]));
            temp[i].put("Quote",(quoteArray[4]));
            list.add(temp[i]);

        }


    }

任何幫助將不勝感激。

看下面的代碼:

HashMap<String,String> temp[] = null; 
temp[i] = new HashMap<String,String>();

剛剛temp變量分配了一個空值(通常會有一個HashMap<String, String>[] temp )-因此,當您嘗試訪問temp[i]時,您當然會得到NullPointerException temp[i]在下一個語句中。

目前尚不清楚為什么在該代碼中完全使用數組-為​​什么不僅僅使用:

HashMap<String, String> map = new HashMap<String, String>();
map.put("Author", quoteArray[2]);
map.put("Quote", quoteArray[4]);
list.add(map);

另外,由於地圖始終具有相同的兩個鍵,因此尚不清楚您為什么在這里使用地圖。 為什么不使用名稱和作者屬性創建Quote類? 另外,在這里使用靜態變量似乎是個壞主意-為什么getFavorites不會在每次調用時創建一個新列表,並在方法末尾將其返回?

temp不指向數組。 您將其設置為null

您將變量temp聲明為數組(通過編寫HashMap temp[] )。

如果不是實際數組,則無法設置任何元素。

您聲明並使用temp錯誤。 您不需要一個HashMap數組,只需一個HashMap ,因為listArrayList<HashMap>

HashMap<String,String> temp = new HashMap<String,String>();
temp.put("Author",(quoteArray[2]));
temp.put("Quote",(quoteArray[4]));
list.add(temp);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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