2015-11-06 41 views
0

enter image description hereDatePicker和TimePicker更改值

我有DatePicker。如果我通过使用键盘更改值(年),则此值保持不变。只有当我点击按钮 “+” 或 “ - ” 值的变化.... 它我听众:

datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() { 
     @Override 
     public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
      mDate.set(Calendar.YEAR, year); 
      mDate.set(Calendar.MONTH, monthOfYear); 
      mDate.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
      getArguments().putSerializable(EXTRA_DATE, mDate); 
     } 
    }); 

和类似的问题TimePicker(改变任何东西)

 timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() { 
     @Override 
     public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { 
      mTime.set(Calendar.HOUR_OF_DAY, hourOfDay); 
      mTime.set(Calendar.MINUTE, minute); 
      getArguments().putSerializable(EXTRA_TIME, mTime); 
     } 

    }) 

和内部片段

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(resultCode != Activity.RESULT_OK) return; 
    if(requestCode == REQUEST_DATE){ 
     Calendar date = (Calendar)data.getSerializableExtra(DateFragment.EXTRA_DATE); 
     mObject.setDate(date); 
     SimpleDateFormat dateFormat = new SimpleDateFormat("EE, dd.MM.yy", Locale.US); 
     mDateButton.setText(dateFormat.format(mObject.getDate().getTime())); 
    } 
    if(requestCode == REQUEST_TIME){ 
     Calendar date = (Calendar)data.getSerializableExtra(TimeFragment.EXTRA_TIME); 
     mObject.setDate(date); 
     SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm, a", Locale.US); 
     mTimeButton.setText(dateFormat.format(mObject.getDate().getTime())); 
    } 
} 

回答

1

DatePicker只有失去重心从它的年EditText后日期变化做出反应。

所以你可以清除它的焦点datePicker.clearChildFocus(getCurrentFocus()),然后得到它的日期值。

+0

在哪里插入?我试过但getCurrentFocus无法解析方法...... –

+0

你在对话框中使用它吗? –

+0

是的,我用在dialogFragment里面... –