Получатели широковещания не могут получить новые значения из нового намерения и показать предыдущие значения - PullRequest
1 голос
/ 11 января 2020

У меня есть менеджер тревог. когда пользователь нажимает на кнопку «Добавить», пользователь выбирает время, дату и заполнение заголовка и прочее ... и после этого. Я сохраняю это в базу данных и показываю эти значения в режиме рециркуляции.

Я получаю значения и сохраняю их в базе данных следующим образом:

        saveAlarm.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {


            final String mTitle = title.getText().toString();
            final String mDate = date;
            final String mTime = time;
            final String mRepeat = getrepeat.getText().toString();
            final String mReport = single_choice_selected_report_as;


            if (isAnyStringNullOrEmpty(mTitle, mDate, mTime, mRepeat, mReport)) {
                Snackbar snackbar = Snackbar.make(mainLayout, "", Snackbar.LENGTH_LONG);
                Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView();
                TextView textView = (TextView) layout.findViewById(com.google.android.material.R.id.snackbar_text);
                textView.setVisibility(View.INVISIBLE);
                View snackView = LayoutInflater.from(SetAlarmActivity.this).inflate(R.layout.custom_toast, null, false);
                TextView txtNoticToExit = (TextView) snackView.findViewById(R.id.txtCustomToast);
                txtNoticToExit.setText(getResources().getString(R.string.fill_field));
                txtNoticToExit.setTypeface(Apps.font);
                layout.setPadding(0, 0, 0, 0);
                layout.addView(snackView, 0);
                snackbar.show();
            } else {
                if (editMode) {


                    Alarm alarm = new Alarm(id, mTitle, mDate, mTime, mRepeat, mReport, active);
                    mDatabase.updateAlarm(alarm);

                } else {
                    Alarm alarm = new Alarm(mTitle, mDate, mTime, mRepeat, mReport, 0);
                    mDatabase.addAlarm(alarm);

                }

                Intent intent = new Intent(SetAlarmActivity.this, AlarmActivity.class);
                startActivity(intent);
                SetAlarmActivity.this.finish();
            }

        }

В строке моего просмотра корзины у меня есть кнопка, чтобы активировать этот элемент в зависимости от времени.

          holder.toggleButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            int test = alarm.getActive();
            state = !state;
            if (test == 0) {

                holder.toggleButton.setBackgroundResource(R.drawable.on);
                holder.row.setBackgroundResource(R.drawable.purple_row);
                holder.reminderCalenderRow.setTextColor(context.getResources().getColor(R.color.white));
                holder.reminderTitleRow.setTextColor(context.getResources().getColor(R.color.white));
                holder.showCalenderRow.setTextColor(context.getResources().getColor(R.color.white));
                holder.showTimeRow.setTextColor(context.getResources().getColor(R.color.white));
                holder.reminderCalenderRow.setTextColor(context.getResources().getColor(R.color.white));
                holder.reminderTimeRow.setTextColor(context.getResources().getColor(R.color.white));
                Drawable myDrawable = context.getResources().getDrawable(R.drawable.menu_icon);
                holder.popUp_menu.setBackground(myDrawable);
                alarm.setActive(1);

                String strTime = alarm.getTime();
                String[] timeRemoveSpace = strTime.split(" ");
                String[] splitTime = timeRemoveSpace[0].split(":");
                hour = getHour(strTime);
                mintue = Integer.parseInt(splitTime[1]);



                Calendar calendar = Calendar.getInstance();
                calendar.setTimeInMillis(System.currentTimeMillis());
                calendar.set(Calendar.HOUR_OF_DAY, hour);
                calendar.set(Calendar.MINUTE, mintue);
                calendar.set(Calendar.SECOND, 00);

                Long date = calendar.getTimeInMillis();
                StartAlarm(alarm.getId(), alarm, date);


            } else {
                holder.row.setBackgroundResource(R.drawable.white_row);
                holder.reminderTitleRow.setTextColor(context.getResources().getColor(R.color.colorBlack));
                holder.showCalenderRow.setTextColor(context.getResources().getColor(R.color.colorBlack));
                holder.showTimeRow.setTextColor(context.getResources().getColor(R.color.colorBlack));
                holder.reminderCalenderRow.setTextColor(context.getResources().getColor(R.color.colorBlack));
                holder.reminderTimeRow.setTextColor(context.getResources().getColor(R.color.colorBlack));
                Drawable myDrawable = context.getResources().getDrawable(R.drawable.menu_icon_black);
                holder.popUp_menu.setBackground(myDrawable);
                alarm.setActive(0);
            }
            mDatabase.updateActive(state, alarm.getId());
            notifyDataSetChanged();

        }
    });

и отправьте намерение в broatcast:

    public void StartAlarm(int id, Alarm alarm, Long time) {
    Intent intent = new Intent(context, MyReceiver.class);
    intent.setAction("com.nooshindroid.yastashir");
    Bundle bundle = new Bundle();
    bundle.putString(EXTRA_TITLE, alarm.getTitle());
    bundle.putString(EXTRA_ALARM_DATE, alarm.getDate());
    bundle.putString(EXTRA_REPORT, alarm.getReport());
    bundle.putString(EXTRA_REPEAT, alarm.getRepeat());
    intent.putExtras(bundle);
    pendingIntent = PendingIntent.getBroadcast(context, id, intent, 0);
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
    if ("بدون تکرار".equals(alarm.getRepeat())) {
        Log.i("ShowMeTime", "111111");
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            alarmManager.setExact(AlarmManager.RTC_WAKEUP, time, pendingIntent);

            Toast.makeText(context, "Alarm>kitkat", Toast.LENGTH_SHORT).show();
        }

        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
            alarmManager.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);

            Toast.makeText(context, "Alarm<kitkat", Toast.LENGTH_SHORT).show();
        }
    } else {
        Log.i("ShowMeTime", "222222");
        switch (alarm.getRepeat()) {
            case "هر ساعت":
                alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time, AlarmManager.INTERVAL_HOUR, pendingIntent);
                break;
            case "هر روز":
                alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time, AlarmManager.INTERVAL_DAY, pendingIntent);
                break;
            case "هر هفته":
                alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time, AlarmManager.INTERVAL_DAY * 7, pendingIntent);
                break;
            case "هر ماه":
                alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time, AlarmManager.INTERVAL_DAY * 30, pendingIntent);
                break;
        }
    }

}

все в порядке, пока я не хочу редактировать. После того, как я отредактирую свои значения и все эти повторы, в расширенном приведении отобразятся старые значения.

это мой приемник:

    public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    //and doing something
    if (intent.getAction().equals("com.nooshindroid.yastashir")) {
        String title = intent.getExtras().getString(EXTRA_TITLE);
        Toast.makeText(context, "Its time!!!", Toast.LENGTH_SHORT).show();
        Log.i("khhhhhhhhhhhhhhh", "Started >>>>>>>"+title);
    }
}

}

Почему это произошло? любая помощь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...