我想使用 DatePickerDialogEditText 值的值设置为 (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()));
}

希望这可以帮助 ....

10-08 11:41
查看更多