У меня есть переключатель, который запускает TimePickerDialog для установки тревоги. Я хочу, чтобы будильник погас, когда он выключен. Также я хочу снова установить будильник, когда я включу его.Как отключить будильник с помощью переключателя
public class MainAddMedActivity extends AppCompatActivity {
private TextView txtAlarmPrompt;
private TimePickerDialog timePickerDialog;
private Switch switchReminder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_add_med);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
this.txtAlarmPrompt = (TextView) findViewById(R.id.txtAlarmPrompt);
this.switchReminder = (Switch) findViewById(R.id.switchReminder);
switchReminder.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
openTimerPickerDialog(true);
timePickerDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
switchReminder.setChecked(false);
}
});
}
}
});
}
private void openTimerPickerDialog(boolean is24HourView) {
Calendar cal = Calendar.getInstance();
timePickerDialog = new TimePickerDialog(
MainAddMedActivity.this,
onTimeSetListener,
cal.get(Calendar.HOUR_OF_DAY),
cal.get(Calendar.MINUTE),
is24HourView);
timePickerDialog.show();
}
TimePickerDialog.OnTimeSetListener onTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar calNow = Calendar.getInstance();
Calendar calSet = (Calendar) calNow.clone();
calSet.set(Calendar.HOUR_OF_DAY, hourOfDay);
calSet.set(Calendar.MINUTE, minute);
calSet.set(Calendar.SECOND, 0);
calSet.set(Calendar.MILLISECOND, 0);
if (calSet.compareTo(calNow) <= 0) {
calSet.add(Calendar.DATE, 1);
}
setAlarm(calSet);
}
};
private void setAlarm(Calendar targetCal) {
txtAlarmPrompt.setText(getString(R.string.txtPromptAlarm) + " " + targetCal.getTime());
Intent intent = new Intent(getApplicationContext(), AlarmNotificationReceiver.class);
final PendingIntent pendingIntent = PendingIntent.getBroadcast(this, AlarmNotificationReceiver.REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
final AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
***switchReminder.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked = false) {
alarmManager.cancel(pendingIntent);
}
}
});*** //This Part is wrong does not work
}
Хехе, простые ошибки, подобные этим, обычно худшие - их действительно трудно увидеть и найти. Я не видел этого до того, как я начал писать комментарий к вашему вопросу, а затем я действительно понял, что происходит :-) – Darwind