2016-07-27 12 views
0

私はCalendarを使用していますが、将来の日付と日付を取得することができます。 22:30Androidのカレンダーを今日に変更する時刻を変更する

私はDatePickerDialogとセット日付を使用する場合私の問題がある:私は例15-09-2016の日付を設定し、1 DatePickerDialogを持っていると私は例えば時間を設定し、1 TimePickerDialogを持っていると仮定します。 15-09-2016これは問題ありません。しかし、TimePickerDialogを使用して時刻を変更しようとすると、Calendar'sの日付が今日(27-07-2016)に変更されています。

しかし、私はまず、その後DatePickerDialogを使用TimePickerDialogを使用する場合はそこには問題はありません、私は日付を設定することができる午前:15-09-2016午後10時30

作成するときに、私はGoogleとstackoverflowのを確認し、提案の質問を見てこの質問は何も見ませんでした。

マイDatePickerDialog

DatePickerDialog datePickerDialog= 
    new DatePickerDialog(thisActivity, new DatePickerDialog.OnDateSetListener() { 
     @Override 
     public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
      mCalendarAlarm.set(Calendar.YEAR, year); 
      mCalendarAlarm.set(Calendar.MONTH, monthOfYear); 
      mCalendarAlarm.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
      SimpleDateFormat dateformat = new SimpleDateFormat("dd MMM yyyy kk:mm",Locale.getDefault()); 
      String datetime = dateformat.format(mCalendarAlarm.getTime()); 
      alarmDate.setText(datetime); 
      }}, mCalendarAlarm.get(Calendar.YEAR), mCalendarAlarm.get(Calendar.MONTH), 
      mCalendarAlarm.get(Calendar.DAY_OF_MONTH)); 

datePickerDialog.getDatePicker().setMinDate(mCalendarAlarm.getTimeInMillis()); 
datePickerDialog.show(); 

マイTimePickerDialog

TimePickerDialog mTimePicker; 
int hour = mCalendarAlarm.get(Calendar.HOUR_OF_DAY); 
int minute = mCalendarAlarm.get(Calendar.MINUTE); 
mTimePicker = new TimePickerDialog(thisActivity,mPickerTheme, new TimePickerDialog.OnTimeSetListener() { 
    @Override 
    public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) { 
     mCalendarAlarm.set(Calendar.HOUR_OF_DAY,selectedHour); 
     mCalendarAlarm.set(Calendar.MINUTE,selectedMinute); 
     alarmDialogTime.setText(String.format(Locale.getDefault(),"%02d:%02d", selectedHour, selectedMinute)); 
     }}, hour, minute, true); 
mTimePicker.show(); 

Calendarを宣言する場合:

mCalendarAlarm = Calendar.getInstance(); 
mCalendarAlarm.setTimeZone(TimeZone.getDefault()); 

を、どのように私はこの問題を解決することができ、道や君たちがあります以前この問題に会う。手伝ってくれてありがとう !

答えて

1

DatePickerの両方に同じカレンダーオブジェクトmCalendarAlarmを使用していますか?両方のピッカーに異なるオブジェクトCalendarを使用してみてください。例えば

DatePickerため

mCalendarAlarm、あなたが複数のinitを使用している場合mCalendarAlarm = Calendar.getInstance();が不要のINITを削除TimePicker

ための新しいCalendarオブジェクトmTimeAlarmを作成します。

+0

私は不要な 'mCalendarAlarm = Calendar.getInstance();'を削除することで問題を解決しました。私は複数の 'mCalendarAlarm = Calendar.getInstance();' initを持っていました。それらをすべて削除して、 'Calendar'を1回だけ初期化します。あなたの答えは私が3日間(睡眠、食べ、コードループ)のように継続的に働いていることを助けてくれたかもしれない。ありがとう。 –

+0

あなたの問題は解決されていますか? –