0

I need to implement a month chooser in android, where i can choose a month and year instead of a day.I tried to hide the day option in android date picker but its not working.I only need month and year in calendar.How to do that.Please help me.

KJEjava48
  • 1,967
  • 7
  • 40
  • 69
  • Why not have picker of your own :) two dropdowns one for month(with 12 values) one for years for whatever the number you wish !!! – Ramesh Nov 23 '15 at 07:17
  • Possible duplicate of [Android DatePicker change to only Month and Year](http://stackoverflow.com/questions/21321789/android-datepicker-change-to-only-month-and-year) – kapilgm Nov 23 '15 at 07:19
  • but that answer is not working for me – KJEjava48 Nov 23 '15 at 07:32

1 Answers1

1

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();
  • I have tried this.But it's not working.It still shows the days in calender because the second for loop is not working. – KJEjava48 Nov 23 '15 at 07:23
  • the if condition is not satisfying in the second for loop – KJEjava48 Nov 23 '15 at 07:30
  • mDeligate,LOG_TAG,MODE_CALENDAR,MODE_SPINNER these are the values for datePickerField.getName() in the second for loop and hence it never matches with "mDaySpinner" – KJEjava48 Nov 23 '15 at 07:42
  • This is not working, if ("mDaySpinner".equals(datePickerField.getName())) always false. every where in net this is the answer , but it is not woking. please update your answer – Nirmal Dhara Sep 17 '16 at 09:33