2010-09-09 10 views
6

Estoy utilizando este código para mostrar diálogo de alerta ... cuando hago clic en el botón de OK debe mostrar el selector de fechas ..excepción argumento ilegal de androide de diálogo

protected Dialog onCreateDialog(int id) { 
    switch (id) { 
    case TIME_DIALOG_ID: 
     return new TimePickerDialog(ListReminderActivity.this, 
       mTimeSetListener, mHour, mMinute, false); 
    case DATE_DIALOG_ID: 
     return new DatePickerDialog(ListReminderActivity.this, 
       mDateSetListener, mYear, mMonth, mDay); 
    case DESCRIPTION_DIALOG_ID: 
     return new AlertDialog.Builder(ListReminderActivity.this).setTitle(
       "Add Reminder").setView(description).setPositiveButton(
       R.string.add_alert_ok, 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, 
          int whichButton) { 
         ListReminderActivity.this 
           .dismissDialog(DESCRIPTION_DIALOG_ID); 
         ListReminderActivity.this 
           .removeDialog(DESCRIPTION_DIALOG_ID); 
         ListReminderActivity.this 
           .showDialog(DATE_DIALOG_ID); 
        } 
       }).setNegativeButton(R.string.add_alert_cancel, 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, 
          int whichButton) { 
         ListReminderActivity.this 
           .dismissDialog(DESCRIPTION_DIALOG_ID); 
         ListReminderActivity.this 
           .removeDialog(DESCRIPTION_DIALOG_ID); 
        } 
       }).create(); 
    } 
    return null; 
} 

pero el problema es .. i estoy recibiendo la excepción cuando i clcik en el botón OK

Excepción es ...

09-09 10:30:48.941: ERROR/AndroidRuntime(1189): FATAL EXCEPTION: main 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189): java.lang.IllegalArgumentException: current should be >= start and <= end 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at android.widget.NumberPicker.setCurrent(NumberPicker.java:288) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at android.widget.DatePicker.updateDaySpinner(DatePicker.java:364) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at android.widget.DatePicker.updateSpinners(DatePicker.java:350) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at android.widget.DatePicker.init(DatePicker.java:346) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at android.app.DatePickerDialog.<init>(DatePickerDialog.java:124) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at android.app.DatePickerDialog.<init>(DatePickerDialog.java:83) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at com.app.reminder.ListReminderActivity.onCreateDialog(ListReminderActivity.java:149) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at android.app.Activity.onCreateDialog(Activity.java:2472) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at android.app.Activity.createDialog(Activity.java:881) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at android.app.Activity.showDialog(Activity.java:2547) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at android.app.Activity.showDialog(Activity.java:2514) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at com.app.reminder.ListReminderActivity$3.onClick(ListReminderActivity.java:164) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at android.os.Looper.loop(Looper.java:123) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at java.lang.reflect.Method.invoke(Method.java:521) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
09-09 10:30:48.941: ERROR/AndroidRuntime(1189):  at dalvik.system.NativeStart.main(Native Method) 
+0

y también recibo otra excepción al cancelar y luego mostrar el cuadro de diálogo – Kandha

+0

09-09 10: 35: 38.610: ERROR/AndroidRuntime (1311): java.lang.IllegalStateException: The el niño especificado ya tiene un padre. Primero debe llamar a removeView() en el padre del niño. 09-09 10: 35: 38.610: ERROR/AndroidRuntime (1311): en android.view.ViewGroup.addViewInner (ViewGroup.java:1970) 09-09 10: 35: 38.610: ERROR/AndroidRuntime (1311): en android.view.ViewGroup.addView (ViewGroup.java:1865) 09-09 10: 35: 38.610: ERROR/AndroidRuntime (1311): en android.view.ViewGroup.addView (ViewGroup.java:1845) – Kandha

+0

cuál es el valor de 'mYear',' mMonth', 'mDay' cuando se está creando el cuadro de diálogo? ¿Lo inicializaste a algo? – st0le

Respuesta

5

según lo indicado por el error que se ve en los registros, uno de sus mYear, valores mMonth o mday no es válido.

+0

Si recuerdo correctamente el código DatePicker, ¿el año mínimo y máximo posible depende del estilo actual? Entonces, ¿un tema podría bloquear la aplicación en ciertas fechas mientras que otros no? Además, ¿hay un plan para respaldar las fechas sin años? Lo había resuelto en los últimos días al establecer el año en 0, pero eso ya no funciona debido a la restricción min/max. – EboMike

+0

Me encuentro con el mismo problema - mi código falla al configurar el año - Reduje manualmente el año a 2010, lo que funciona, pero por supuesto que realmente necesito 2011 (que es el año actual en este momento): p. Estaba pensando en tu comentario. ¿Qué quieres decir con "estilo actual"? – Ready4Android

9

¿Sabía que el campo de mes está basado en cero, comienza desde cero? ¡Asegúrate de que el valor por mes no exceda 11! Obtuve exactamente el mismo mensaje y, dado que utilicé 12 por un mes, esa fue la razón para obtener esta excepción.

0

una idea para establecer el valor de campo de mes en X es establecerlo en X% 12 (módulo), por lo que está seguro de que no excederá el valor de autorización. Lo mismo para horas y minutos. Saludos. Charles.

-2

debe haber cambiado los valores de mYear, mMonth, mDay. los meses son 0-11. asegúrese de que sus valores estén en el rango

Cuestiones relacionadas