0

私は目覚まし時計アプリケーションを持っており、すでに設定されているすべてのアラームを削除し、データベースからもすべてのレコードを削除するメソッドを作成しようとしています。

このメソッドを使用して、アラームを設定しているときに保留中のインテントの 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 の保留中のインテントをキャンセルします。

4

0 に答える 0