Android DatePicker change to only Month and Year

android, date, dialog

Solution

Try the following code. It will show a `DatePicker` with only the year and month (without day)

private DatePickerDialog createDialogWithoutDateField() {
        DatePickerDialog dpd = new DatePickerDialog(this, null, 2014, 1, 24);
        try {
            java.lang.reflect.Field[] datePickerDialogFields = dpd.getClass().getDeclaredFields();
            for (java.lang.reflect.Field datePickerDialogField : datePickerDialogFields) {
                if (datePickerDialogField.getName().equals("mDatePicker")) {
                    datePickerDialogField.setAccessible(true);
                    DatePicker datePicker = (DatePicker) datePickerDialogField.get(dpd);
                    java.lang.reflect.Field[] datePickerFields = datePickerDialogField.getType().getDeclaredFields();
                    for (java.lang.reflect.Field datePickerField : datePickerFields) {
                        Log.i("test", datePickerField.getName());
                        if ("mDaySpinner".equals(datePickerField.getName())) {
                            datePickerField.setAccessible(true);
                            Object dayPicker = datePickerField.get(datePicker);
                            ((View) dayPicker).setVisibility(View.GONE);
                        }
                    }
                }
            }
        } 
        catch (Exception ex) {
        }
        return dpd;
    }

This method returns a date picker dialog. So , in your button's `onClick` method add the following code to display your dialog.

createDialogWithoutDateField().show();

Problem

I have a DatePickerDialog and I want view only Month and Year. How can I change this code? ``` public void chooseDate2(View v) { new DatePickerDialog( act.this, d1, dateAndTime1.get(Calendar.YEAR) + 2, dateAndTime1.get(Calendar.MONTH), dateAndTime1.get(Calendar.DAY_OF_MONTH) ).show(); } private void updateLabel2() { scadenza.setText(fmtDateAndTime.format(dateAndTime1.getTime())); } DatePickerDialog.OnDateSetListener d1=new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { dateAndTime1.set(Calendar.YEAR, year); dateAndTime1.set(Calendar.MONTH, monthOfYear); dateAndTime1.set(Calendar.DAY_OF_MONTH, dayOfMonth); updateLabel2(); } }; ``` Thanks

Original source

Related problems