我想使用 DatePickerDialog
将 EditText
值的值设置为 (sdf.format(myCalendar.getTime()));
。我已经尝试过这种方式,但它不起作用。如何解决?
下面是我的代码:
Calendar myCalendar;
DatePickerDialog.OnDateSetListener date;
private int pYear;
private int pMonth;
private int pDay;
static final int DATE_DIALOG_ID = 0;
myCalendar = Calendar.getInstance();
pYear = myCalendar.get(Calendar.YEAR);
pMonth = myCalendar.get(Calendar.MONTH);
pDay = myCalendar.get(Calendar.DAY_OF_MONTH);
dobET.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog(DATE_DIALOG_ID);
}
});
public Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
date = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
pYear = year;
pMonth = monthOfYear;
pDay = dayOfMonth;
updateLabel();
}
};
DatePickerDialog dialog = new DatePickerDialog(this, date, pYear, pMonth, pDay);
dialog.getDatePicker().setMaxDate(new Date().getTime());
return dialog;
}
return null;
}
private void updateLabel() {
String myFormat = "MM-dd-yyyy"; // In which you need put here
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
String myFormat2 = "yyyy-MM-dd"; // In which you need put here
SimpleDateFormat sdf2 = new SimpleDateFormat(myFormat2, Locale.US);
dateToSave = sdf2.format(myCalendar.getTime());
saveDOBPrefEditor.putString("DOB", dateToSave);
saveDOBPrefEditor.commit();
dobET.setText(sdf.format(myCalendar.getTime()));
}
最佳答案
试试这个
DatePickerDialog dialog = null;
Calendar myCalendar = Calendar.getInstance();
dobET.setKeyListener(null);
DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
myCalendar.set(Calendar.YEAR, year);
myCalendar.set(Calendar.MONTH, monthOfYear);
myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
updateLabel();
}
};
dobET.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.hideSoftInputFromWindow(dobET.getWindowToken(), 0);
if(!dialog.isShowing()) {
dialog.show();
}
Log.d(TAG, "Click Listener fired");
}
});
dobET.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View arg0, boolean hasFocus) {
InputMethodManager keyboard = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
keyboard.hideSoftInputFromWindow(
dobET.getWindowToken(), 0);
if(hasFocus && !(dialog.isShowing())) {
dialog.show();
}
Log.d(TAG, "Focus Listener " + hasFocus);
}
});
dialog = new DatePickerDialog(MainActivity.this, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
myCalendar.get(Calendar.DAY_OF_MONTH));
private void updateLabel()
{
String myFormat = "MM/dd/yy"; //In which you need put here
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
dobET.setText(sdf.format(myCalendar.getTime()));
}
希望这可以帮助 ....