[英]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
,因為list
是ArrayList<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.