Установить несколько сигналов тревоги с несколькими датами из ArrayList - PullRequest
0 голосов
/ 09 сентября 2018

В моем приложении мне нужно запустить после перезагрузки все тревоги, которые я установил до этого, используя даты в моем классе Arraylist, которые я сохранил с помощью sharedprefs. Но только один устанавливается Alarmmanager. Я использовал BroadcastReciver и цикл for.

ArrayList<DateList1> dateses;
Date dateFromLog;
@Override
public void onReceive(Context context, Intent intent) {

    SharedPreferences sharedPreferences = context.getSharedPreferences("The Selected date", MODE_PRIVATE);
    Gson gson = new Gson();
    String json = sharedPreferences.getString("Date0list", null);
    Type type = new TypeToken<ArrayList<DateList1>>() {
    }.getType();
    dateses = gson.fromJson(json, type);

    if (dateses == null) {
        dateses = new ArrayList<>();
    }

    AlarmManager alarmManager  = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    ArrayList<PendingIntent> intentArray = new ArrayList<PendingIntent>();

    Calendar calendar = Calendar.getInstance();

    for (int i = 0; i<dateses.size(); i++){

        calendar.setTime(dateses.get(i).getDate1());

        Intent intent1 = new Intent(context, AlarmReceiver.class);

        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, i, intent1, PendingIntent.FLAG_ONE_SHOT);
        alarmManager.setExact(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);

        intentArray.add(pendingIntent);

    }






}











    }

А вот как я добавляю дату в Arraylist

ArrayList<DateList1> Dates = new ArrayList<>();






@Override
protected void onCreate(Bundle saveInstanceState) {
    super.onCreate(saveInstanceState);
    setContentView(R.layout.data_picker);

    einfüGGen = (Button) findViewById(R.id.button3);
    datums = (EditText) findViewById(R.id.datums);
    fachs = (EditText) findViewById(R.id.fachs);
    themens = (EditText) findViewById(R.id.themens);
    GG = (TextView) findViewById((R.id.textView));








    einfüGGen.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent resultIntent = new Intent();
            resultIntent.putExtra("datum", datums.getText().toString());
            resultIntent.putExtra("fach", fachs.getText().toString());
            resultIntent.putExtra("themen", themens.getText().toString());

            setResult(RESULT_OK, resultIntent);
            finish();

            int y = Dates.size();

            for (int i = 0; i<Dates.size(); i++){




                Toast.makeText(EingabeFeld.this,"SOOOOSSS"+y,Toast.LENGTH_LONG).show();
            }






        }
    });



    mDateSetListener = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

            Toast.makeText(EingabeFeld.this, "Die Erinnerung wurde festgelegt für den "+dayOfMonth+"/"+month+"/"+year, Toast.LENGTH_SHORT).show();

            Calendar c = Calendar.getInstance();
            c.set(year,month,dayOfMonth);
            c.set(Calendar.HOUR_OF_DAY,15);
            c.set(Calendar.MINUTE,20);
            c.set(Calendar.SECOND,0);


            Date date = c.getTime();

            Dates.add(1,new DateList1(date));

            startAlarm(c);


            saveData();

Вот фактический класс для массива

public Date date1;


public DateList1(Date date){


    date1 = date;
}



public Date getDate1() {
    return date1;

}

}

Я надеюсь, что это увидит Кто-то и спасибо заранее

1 Ответ

0 голосов
/ 10 сентября 2018

Я это решил: D. Я сделал добавление в ArrayList и часть сохранения в моей MainActivity и получил длинный метод startActivityForResult для своей MainActivity из своей SecondActivity.

Спасибо тем, кто пытался мне помочь, вы мне очень нравитесь, ребята, и хорошего вам дня с безошибочным кодом; D

...