@Nikolarsen

Как использовать TimePickerDialog и DarePickerDialog?

Нужно показать уведомление в выбранную пользователем в диалоге дату и время.
Есть код, но работает не так как надо. Выбираю в диалоге завтрашнюю дату и время на минуту вперёд текущего( например 12:20) и уведомление приходит через минуту, хотя должно завтра прийти... Выбираю в диалоге сегодняшний день и уведомление сразу появляется, не успеваю даже время поставить..
Как то по отдельности обрабатываются дата и время, а нужно чтоб это одно целое было...
// запуск диалогов 
	
	public void oneTime(View view){
		
	openTimePickerDialog(true);
	openDatePickerDialog(null);
		
	
	}

	private void openTimePickerDialog(boolean is24r){
		Calendar calendar = Calendar.getInstance();

		timePickerDialog = new TimePickerDialog(
			NoteActivity.this, 
			onTimeSetListener, 

			calendar.get(Calendar.HOUR_OF_DAY), 
			calendar.get(Calendar.MINUTE), 
			is24r);
		timePickerDialog.setTitle("Set Alarm Time");  

		timePickerDialog.show();

	}

    OnTimeSetListener onTimeSetListener
    = new 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){
				//Today Set time passed, count to tomorrow
				//calSet.add(Calendar.DATE, 1);

			}
			
			 time = new SimpleDateFormat("HH:mm").format(calSet.getTime());		
			
		setAlarm(calSet);
		
		}};

	//////////////////////////date
	

	public void openDatePickerDialog(View v) {
        new DatePickerDialog(NoteActivity.this, d,

							 dateAndTime.get(Calendar.YEAR),
							 dateAndTime.get(Calendar.MONTH),				 
							 dateAndTime.get(Calendar.DAY_OF_MONTH))

			.show();
    }

    DatePickerDialog.OnDateSetListener d =new DatePickerDialog.OnDateSetListener() {
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

			Calendar calNow = Calendar.getInstance();
			Calendar dateAndTime = (Calendar) calNow.clone();

			dateAndTime.set(Calendar.YEAR, year);
            dateAndTime.set(Calendar.MONTH, monthOfYear);
            dateAndTime.set(Calendar.DAY_OF_MONTH, dayOfMonth);

			if(dateAndTime.compareTo(calNow) <= 0){
				//Today Set time passed, count to tomorrow
				//dateAndTime.add(Calendar.DATE, 0);

			}

			date = new SimpleDateFormat("EEE, d MMM ").format(dateAndTime.getTime());
			
			
			
			
				setAlarm(dateAndTime);
		
			
			
		}};
	
		
		
	private void setAlarm(Calendar targetCal){

editTextNote.setText(date+time+" + ");

		final int id = (int) System.currentTimeMillis();
		
		Intent intent = new Intent(getBaseContext(), AlarmBroadcastReceiver.class);	
		PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), id, intent, 0);
		AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
		alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
	}
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы