基本上我有一個從我的數據庫中填充listview的方法。我在問這個返回的遊標有問題嗎?
我收到遊標上的空指針和'無法停止活動'錯誤。
這是我如何返回我的光標:
public Cursor getAppointmentsData() {
String[] columns = new String[] { KEY_ROWAPPID, KEY_NAMEAPP,
KEY_TYPEAPP, KEY_TIMEAPP, KEY_DATEAPP, KEY_COMMENTAPP };
Cursor c = ourDatabase.query(DATABASE_TABLEAPP, columns, null, null,
null, null, KEY_NAMEAPP + " ASC", null);
if (c != null) {
if (c.getCount() > 0 && c.moveToFirst())
{
c.moveToFirst();
return c;
}
}
c.close();
return null;
}
當數據庫爲空,即沒有數據,它會崩潰......如果有數據它是好的。這讓我相信我從我的光標返回空值。
你們可以看到這種返回遊標的方法的問題嗎?
對不起,這個簡單的問題,但我撕開代碼之前,我想我會問這裏。
新編輯:
公共光標getAppointmentsData(){ 字符串[]列=新的String [] {KEY_ROWAPPID,KEY_NAMEAPP, KEY_TYPEAPP,KEY_TIMEAPP,KEY_DATEAPP,KEY_COMMENTAPP}; Cursor c = ourDatabase.query(DATABASE_TABLEAPP,columns,null,null, null,null,KEY_NAMEAPP +「ASC」,null);
if (c != null) {
c.moveToFirst();
}
c.close();
return c;
}
這是一個很好的解釋。我必須誠實地說,我沒有意識到,如果'if'stataement沒有被觸發,只需要返回一個空的遊標。我知道當我在方法的底部有返回類型'null'時,我正陷入麻煩。我會實現這一點,看看我如何繼續。我正在打開和關閉調用此遊標方法的類中的數據庫。 – user1352057 2013-03-14 01:20:07
通過c.close()關閉我的遊標仍然是正確的? – user1352057 2013-03-14 01:23:33
是的,完成後關閉它。不是在返回之後,因爲沒有評估過return之後(此外,在這個階段你顯然還沒有完成實例,如果你在哪裏,你將不會從方法中返回:)) – JustDanyul 2013-03-14 01:27:38