بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

ست کردن چندین الارم از دیتابیس

مدیریت گفتگو
m-developer 11 سال پیش
آخرین تغییر: 11 سال پیش

سلام 

من اطلاعات سال ، ماه ، روز و ساعت و دقیقه رو جداگانه در یک جدول توی دیتابیسم دخیره می کنم که تو این حالت ممکنه چندین ردیف از تاریخ هر کدوم با یه ای دی بخصوص درش دخیره شده باشه 

اطلاعات رو از دیتا بیس به این صورت دریافت می کنم:

      private void setingalarmformdatabase() {
        Cursor cursor = G.database.rawQuery("SELECT *FROM storage", null);
        while (cursor.moveToNext()) {
            year = cursor.getInt(cursor.getColumnIndex("storage_year"));
            month = cursor.getInt(cursor.getColumnIndex("storage_month"));
            day = cursor.getInt(cursor.getColumnIndex("storage_day"));
            hour = cursor.getInt(cursor.getColumnIndex("storage_hour"));
            min = cursor.getInt(cursor.getColumnIndex("storage_min"));
            am_pm = cursor.getInt(cursor.getColumnIndex("storage_ampm"));
        }
        cursor.close();
    }

الارم منجرم هم امادس که اگه بهش دیتا بدیم به خوبی کار می کنه اما چطورمی تونم کاری کنم که برای هر دریف از تاریخ که توی دیتا بیس هست یک الارم ساخته بشه؟

الارم  منجرم هم به این صورت اطلاعات میگیره:

 

        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.MONTH, month);
        calendar.set(Calendar.AM_PM, am_pm);
        calendar.set(Calendar.DAY_OF_MONTH, day);
        calendar.set(Calendar.HOUR, hour);
        calendar.set(Calendar.MINUTE, min);
        calendar.set(Calendar.SECOND, sec);

        Intent intent = new Intent(G.context, ActivityAlarm.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        PendingIntent pendingIntent = PendingIntent.getActivity(G.context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

        G.alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

نظرات

Spirit 11 سال پیش
کدهای پایین رو ببرید بالا در انتهای حلقه while قرار بدید.
m-developer 11 سال پیش
یعنی در اون صورت به ازای هر تاریخ یه الارم ساخته میشه؟؟ فک نمی کنم! اگه اون جوری بنویسیم فقط برای اخرین تارخ که وارد شده یه الارم ساخته میشه
m-developer 11 سال پیش
یعنی در اون صورت به ازای هر تاریخ یه الارم ساخته میشه؟؟ فک نمی کنم! اگه اون جوری بنویسیم فقط برای اخرین تارخ که وارد شده یه الارم ساخته میشه ولی امتحان می کنم ببینم چه میشه
m-developer 11 سال پیش
ُSpirit جان عمل می کنه برای هر تاریخ یه الارم ساخت ولی حالا تو این روش چجوری میشه روی الارم ها کنترل داشت؟ یعنی بخواییم یکیشو کنسل کنیم مثلا
m-developer 11 سال پیش
البته نه همون طور که فک می کردم شد. وقتی دو تاریخ جدید بهش اضافه می کنم فقط برای اخرین تاریخ الارم ست می کنه!!!!!!!!!!
Spirit 11 سال پیش
کلیتش اون طوری بود، باید برای هر آلارم یک id متفاوت داشته باشید تا بعداً بشه روش کنترل داشت، خب الان id صفر هست پس فقط همون آخری اعمال میشه.
m-developer 11 سال پیش
میدونی مشکل من دقیقا سر همین id هست. می خوام برای هر تاریخ با id همون تاریخ که توی دیتابیس هست یه الارم ساخته بشه ولی نمیدونم چطور از idهای دیتابیس استفاده کنم!!

پاسخ‌ها 1

m-developer 11 سال پیش

من  اومدم این کارو کردم:

  private void setingalarmformdatabase() {

        Cursor cursor = G.database.rawQuery("SELECT *FROM storage ", null);
        while (cursor.moveToNext()) {
            id = cursor.getInt(cursor.getColumnIndex("storage_id"));
            year = cursor.getInt(cursor.getColumnIndex("storage_year"));
            month = cursor.getInt(cursor.getColumnIndex("storage_month"));
            day = cursor.getInt(cursor.getColumnIndex("storage_day"));
            hour = cursor.getInt(cursor.getColumnIndex("storage_hour"));
            min = cursor.getInt(cursor.getColumnIndex("storage_min"));
            am_pm = cursor.getInt(cursor.getColumnIndex("storage_ampm"));
        }
        cursor.close();
    }


private void setalarm() { sec = 01; setingalarmformdatabase(); month = month - 1; Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, month); calendar.set(Calendar.AM_PM, am_pm); calendar.set(Calendar.DAY_OF_MONTH, day); calendar.set(Calendar.HOUR, hour); calendar.set(Calendar.MINUTE, min); calendar.set(Calendar.SECOND, sec); Intent intent = new Intent(G.context, ActivityAlarm.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // برای پندیگ اینتنت ای دی اختصاص دادم که از دیتا بیس استخراج میشه pendingIntent = PendingIntent.getActivity(G.context, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); G.alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); }

الان به نسبت  id  های توی دیتابیس اتلارم به ساخته میشه اما چطور میشه تک تک رو هر کدوم  از اون الارم های ساخته شده کنترل داشت؟

مثلا کنسل کرد

 

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .