2016-04-11 5 views
0

Я хочу установить два раза время оповещения и соответствующее время. Я создал два диалога для времени предупреждения и времени. Я пытался установить оба раза в разные объекты даты. Тем не менее, когда я меняю время оповещения, соответствующее время также меняется. Я хочу сохранить оба значения по-разному.Как установить время из диалога выбора времени?

private int ALERT_TIME_DIALOG, ALERT_DATE_DIALOG,DUE_TIME_DIALOG,DUE_DATE_DIALOG; 
     @Override 
     public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int second) { 
      String hourString = hourOfDay < 10 ? "0"+hourOfDay : ""+hourOfDay; 
      String minuteString = minute < 10 ? "0"+minute : ""+minute; 
      String secondString = second < 10 ? "0"+second : ""+second; 
      String aTime,dTime; 
      SimpleDateFormat df = new SimpleDateFormat("hh:mm a"); 

      if(ALERT_TIME_DIALOG == 2) { 
       Date alertDate = new Date(); 
       mCalendar = Calendar.getInstance(); 
       mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay); 
       mCalendar.set(Calendar.MINUTE, minute); 
       mCalendar.set(Calendar.SECOND,0); 
       alertDate = mCalendar.getTime(); 
       aTime = df.format(alertDate); 
       alertTime.setText(aTime); 
      } 

      if(DUE_TIME_DIALOG == 4){ 
       Date dueDate = new Date(); 
       mCalendar = Calendar.getInstance(); 
       mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay); 
       mCalendar.set(Calendar.MINUTE, minute); 
       mCalendar.set(Calendar.SECOND,0); 
       dueDate = mCalendar.getTime(); 
       dTime = df.format(dueDate); 
       dueTime.setText(dTime); 
      } 
     } 


    alertTime.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        ALERT_TIME_DIALOG = 2; 

        Calendar now = Calendar.getInstance(); 

        TimePickerDialog tpd = TimePickerDialog.newInstance(
          AddTaskActivity.this, 
          now.get(Calendar.HOUR_OF_DAY), 
          now.get(Calendar.MINUTE), 
          mHoursMode 
        ); 

        tpd.setOnCancelListener(new DialogInterface.OnCancelListener() { 
         @Override 
         public void onCancel(DialogInterface dialogInterface) { 
          Log.d("TimePicker", "Dialog was cancelled"); 
         } 
        }); 
        tpd.show(getFragmentManager(), "Timepickerdialog"); 
       } 
      }); 


    dueTime.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        DUE_TIME_DIALOG = 4; 

        Calendar now = Calendar.getInstance(); 

        TimePickerDialog tpd = TimePickerDialog.newInstance(
          AddTaskActivity.this, 
          now.get(Calendar.HOUR_OF_DAY), 
          now.get(Calendar.MINUTE), 
          mHoursMode 
        ); 

        tpd.setOnCancelListener(new DialogInterface.OnCancelListener() { 
         @Override 
         public void onCancel(DialogInterface dialogInterface) { 
          Log.d("TimePicker", "Dialog was cancelled"); 
         } 
        }); 
        tpd.show(getFragmentManager(), "Timepickerdialog"); 
       } 
      }); 

Что здесь не так? Поблагодарите u ..

+1

Вы должны использовать только один флаг, чтобы проверить, в какое время вы хотите изменить. –

ответ

0

Изменить код как показано ниже: вы установили два разных тега для диалогового окна Alert и Due date. SO, когда вы повторяете процесс, и значение установлено, и в методе onTimeSet выполняется как оператор if.

private int TIME_PICKER_DIALOG_TAG; 
@Override 
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute, int second) { 
    String hourString = hourOfDay < 10 ? "0"+hourOfDay : ""+hourOfDay; 
    String minuteString = minute < 10 ? "0"+minute : ""+minute; 
    String secondString = second < 10 ? "0"+second : ""+second; 

    SimpleDateFormat df = new SimpleDateFormat("hh:mm a"); 
    mCalendar = Calendar.getInstance(); 
    mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay); 
    mCalendar.set(Calendar.MINUTE, minute); 
    mCalendar.set(Calendar.SECOND,0); 

    Date date = mCalendar.getTime(); 
    if(TIME_PICKER_DIALOG_TAG == 2) { 
     alertTime.setText(df.format(date)); 
    }else if(TIME_PICKER_DIALOG_TAG == 4){ 
     dueTime.setText(df.format(date)); 
    } 
} 


alertTime.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     TIME_PICKER_DIALOG_TAG = 2; 

     Calendar now = Calendar.getInstance(); 

     TimePickerDialog tpd = TimePickerDialog.newInstance(
      AddTaskActivity.this, 
      now.get(Calendar.HOUR_OF_DAY), 
      now.get(Calendar.MINUTE), 
      mHoursMode 
     ); 

     tpd.setOnCancelListener(new DialogInterface.OnCancelListener() { 
     @Override 
     public void onCancel(DialogInterface dialogInterface) { 
      Log.d("TimePicker", "Dialog was cancelled"); 
     } 
     }); 
     tpd.show(getFragmentManager(), "Timepickerdialog"); 
    } 
}); 


dueTime.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     TIME_PICKER_DIALOG_TAG = 4; 

     Calendar now = Calendar.getInstance(); 

     TimePickerDialog tpd = TimePickerDialog.newInstance(
      AddTaskActivity.this, 
      now.get(Calendar.HOUR_OF_DAY), 
      now.get(Calendar.MINUTE), 
      mHoursMode 
     ); 

     tpd.setOnCancelListener(new DialogInterface.OnCancelListener() { 
     @Override 
     public void onCancel(DialogInterface dialogInterface) { 
      Log.d("TimePicker", "Dialog was cancelled"); 
     } 
     }); 
     tpd.show(getFragmentManager(), "Timepickerdialog"); 
    } 
}); 
+0

Пробовал этот путь. Тем не менее, это только изменяет время предупреждения. Я думаю, что я инициализирую флаг на клик-слушателе, чтобы он снова выполнялся. Как я могу использовать оба раза? DhavalPatel –

+0

вы пробовали заменить код прослушивания кликов? –

+0

да .. получил результат .. Спасибо .. @ DhavalPatel –