subMap = new HashMap<String, String>();
cursor = sdB.query(DataBase.TB, cols, null, null, null, null, null);
cursor.moveToFirst();
limit = 1;
while(cursor.moveToNext()){
limit +=1;
}
limit *= 2;
cursor.moveToFirst();
do{
for(i=i+1; i<limit; i++){
if(i%2!=0){
subCode = cursor.getString(cursor.getColumnIndex(DataBase.C_CODE));
subMap.put(TAG_SUB_CODE, subCode);
Log.i("Alert", subCode);
subjects.add(subMap);
break;
}
else{
subName = cursor.getString(cursor.getColumnIndex(DataBase.SUB_TITLE));
subMap.put(TAG_SUB_NAME, subName);
if(subMap.containsKey(TAG_SUB_NAME))
Log.i("Alert", "Yes");
if(subMap.containsValue(subName))
Log.i("Alert", "Again Yes");
Log.i("Alert", TAG_SUB_NAME);
Log.i("Alert", subName);
subjects.add(subMap);
}
}
}while(cursor.moveToNext());
cursor.close();
在if和else语句中给我subjects.add(subMap)
的NPE。
如果是,则先执行其他操作。但程序在else块中首次遇到它时会停止。
谁能帮帮我吗。
我检查了值的存在并键入了hashmap,它在我的log cat中返回true(yes
和again yes
)但仍然是subjects.add(subMap)返回一个NPE。
谢谢
答案 0 :(得分:0)
您需要初始化列表subjects
。例如:
ArrayList<HashMap<String, String>> subjects = new ArrayList<HashMap<String, String>>();
如果你不这样做,那就在这一行:
subjects.add(subMap);
将抛出NPE。
答案 1 :(得分:0)
最有可能subjects
为空。你有没有像这样初始化它:
ArrayList<Map<String, String>> subjects = new ArrayList<Map<String, String>>();