我正在使用闹钟应用程序,我正在尝试创建一个删除所有已设置警报的方法,并删除数据库中的所有记录。
使用此方法,当我设置闹钟时,我会检索待处理意图的RequestCode:
public static void CursorRQ() {
Cursor cursor;
Integer cursorRQ;
cursor = DatabaseManager.getAllData();
cursor.moveToFirst();
if (!cursor.isAfterLast()) {
do {
cursorRQ = cursor.getInt(0);
if (cursorRQ >= RQ) {
RQ = RQ + 1;
}
}
while (cursor.moveToNext());
}
cursor.close();
}
现在,取消并且一切正常,直到我删除数据库表:
public static void deleteAll() {
db.delete(TABLE_NAME, null, null);
}
当我开始设置新警报时。他们设置了正确的请求代码(从1开始),然后为每个新警报设置+1,但是当我尝试再次取消所有警报时,则使用此方法:
Cursor cursor = DatabaseManager.getAllData();
cursor.moveToFirst();
int IDRQ = cursor.getInt(0);
while(cursor.moveToNext()) {
IDRQ = cursor.getInt(0);
}
使用起始数字填充光标,就像我从未删除数据库中的值一样。
例如我设置3个警报并且他们得到请求代码1,2,3。我删除它们并且它们被完全删除和取消,然后我设置新的警报并且它们再次设置为1,2,3但是当我取消它们,该方法取消了请求号为4,5,6的待处理意图,就像我从未删除过记录一样。