{"id":6660,"date":"2014-04-20T21:49:02","date_gmt":"2014-04-20T21:49:02","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2014\/04\/20\/android-datepickerdialog-crash-on-2-3-collection-of-common-programming-errors\/"},"modified":"2014-04-20T21:49:02","modified_gmt":"2014-04-20T21:49:02","slug":"android-datepickerdialog-crash-on-2-3-collection-of-common-programming-errors","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2014\/04\/20\/android-datepickerdialog-crash-on-2-3-collection-of-common-programming-errors\/","title":{"rendered":"Android DatePickerDialog crash on 2.3-Collection of common programming errors"},"content":{"rendered":"<p>I have a DatePickerDialog on my application. I am using DatePickerDialog because I need to show only month and year and it&#8217;s easier with dialog than datepicker. Its working fine in 4.0 or higher version but when I try to open the DatePickerDialog clicking an edittext in 2.3 the app get crashed.<\/p>\n<p>Here the code:<\/p>\n<pre><code>import java.lang.reflect.Field;\nimport java.util.Date;\n\nimport android.app.Activity;\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.widget.Button;\nimport java.lang.reflect.Field;\nimport java.util.Calendar;\nimport android.app.Activity;\nimport android.app.DatePickerDialog;\nimport android.support.v4.app.DialogFragment;\nimport android.app.Dialog;\nimport android.app.DatePickerDialog.OnDateSetListener;\nimport android.os.Bundle;\nimport android.view.View;\nimport android.view.View.OnClickListener;\nimport android.widget.DatePicker;\nimport android.widget.EditText;\npublic class ElegirMesAnoActivity extends Activity {\n\n    CustomDatePicker dpFecha;\n    Button btnAceptar, btnVolver;\n    private int mYear;\n    private int mMonth;\n    private int mDay;\n    private EditText etPickADate;\n    static final int DATE_DIALOG_ID = 1;\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n    super.onCreate(savedInstanceState);\n    setContentView(R.layout.activity_elegir_mes_ano);\n    btnAceptar=(Button)findViewById(R.id.btnAceptar);\n    btnVolver=(Button)findViewById(R.id.btnVolver);\n    \/\/dpFecha=(CustomDatePicker)findViewById(R.id.dpFechaGrafico);\n\n\n\n        etPickADate = (EditText) findViewById(R.id.et_datePicker);\n        etPickADate.setOnClickListener(new OnClickListener() {\n\n            @Override\n            public void onClick(View arg0) {\n                showDialog(DATE_DIALOG_ID);\n            }\n        });\n\n        final Calendar c = Calendar.getInstance();\n        mYear = c.get(Calendar.YEAR);\n        mMonth = c.get(Calendar.MONTH);\n\n\n\n\n\n    btnAceptar.setOnClickListener(new OnClickListener() {\n        @Override\n        public void onClick(View v) {\n                Date fecha= new Date(mYear-1900, mMonth, mDay);\n            \/\/Date fecha=new Date(dpFecha.getYear()-1900, dpFecha.getMonth(), dpFecha.getDayOfMonth());\n\n\n            java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat(\"dd\/MM\/yyyy\");\n            String fechaStr = sdf.format(fecha);       \n\n\n            Intent intent =\n                    new Intent(ElegirMesAnoActivity.this, EstadisticaPorDiaActivity.class);           \n            Bundle b = new Bundle();\n            b.putString(\"fecha\", fechaStr);\n            intent.putExtras(b);\n            startActivity(intent);\n\n        }\n   });\n    btnVolver.setOnClickListener(new OnClickListener() {\n        @Override\n        public void onClick(View v) {\n\n            finish();\n\n        }\n   });\n    }\n    DatePickerDialog.OnDateSetListener mDateSetListner = new OnDateSetListener() {\n\n        @Override\n        public void onDateSet(DatePicker view, int year, int monthOfYear,\n                              int dayOfMonth) {\n\n            mYear = year;\n            mMonth = monthOfYear;\n            mDay = dayOfMonth;\n            updateDate();\n        }\n    };\n\n    @Override\n    protected Dialog onCreateDialog(int id) {\n        switch (id) {\n            case DATE_DIALOG_ID:\n\/*\n* return new DatePickerDialog(this, mDateSetListner, mYear, mMonth,\n* mDay);\n*\/\n                DatePickerDialog datePickerDialog = this.customDatePicker();\n                return datePickerDialog;\n        }\n        return null;\n    }\n\n    protected void updateDate() {\n        int localMonth = (mMonth + 1);\n        String monthString = localMonth &lt; 10 ? \"0\" + localMonth : Integer\n                .toString(localMonth);\n        String localYear = Integer.toString(mYear).substring(2);\n        etPickADate.setText(new StringBuilder()\n\/\/ Month is 0 based so add 1\n                .append(monthString).append(\"\/\").append(localYear).append(\" \"));\n        showDialog(DATE_DIALOG_ID);\n    }\n\n    private DatePickerDialog customDatePicker() {\n        DatePickerDialog dpd = new DatePickerDialog(this, mDateSetListner,\n                mYear, mMonth, mDay);\n        try {\n\n            Field[] datePickerDialogFields = dpd.getClass().getDeclaredFields();\n            for (Field datePickerDialogField : datePickerDialogFields) {\n                if (datePickerDialogField.getName().equals(\"mDatePicker\")) {\n                    datePickerDialogField.setAccessible(true);\n                    DatePicker datePicker = (DatePicker) datePickerDialogField\n                            .get(dpd);\n                    Field datePickerFields[] = datePickerDialogField.getType()\n                            .getDeclaredFields();\n                    for (Field datePickerField : datePickerFields) {\n                        if (\"mDayPicker\".equals(datePickerField.getName())\n                                || \"mDaySpinner\".equals(datePickerField\n                                .getName())) {\n                            datePickerField.setAccessible(true);\n                            Object dayPicker = new Object();\n                            dayPicker = datePickerField.get(datePicker);\n                            ((View) dayPicker).setVisibility(View.GONE);\n                        }\n                    }\n                }\n\n            }\n        } catch (Exception ex) {\n        }\n        return dpd;\n    }\n}\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>I have a DatePickerDialog on my application. I am using DatePickerDialog because I need to show only month and year and it&#8217;s easier with dialog than datepicker. Its working fine in 4.0 or higher version but when I try to open the DatePickerDialog clicking an edittext in 2.3 the app get crashed. Here the code: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6660","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/6660","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=6660"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/6660\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=6660"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=6660"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=6660"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}