yo estoy usando el siguiente
ejemplo de selector de fecha

http://developer.android.com/guide/tutorials/views/hello-datepicker.html

ahora quiero realizar algunas funcionalidades haciendo clic en selector de fecha botón cancelar, pero no veo cancelar el evento dentro de datepickerdialog

puede cualquiera me guía de cómo lograr esto.

cualquier ayuda se agradece.

InformationsquelleAutor UMAR | 2010-05-28

11 Comentarios

  1. 66

    Aquí es como yo lo hice:

      DatePickerDialog dialog = new DatePickerDialog(this,
                  mDateSetListener,
                  year, month, day);
    
      dialog.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.cancel), new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
           if (which == DialogInterface.BUTTON_NEGATIVE) {
              //Do Stuff
           }
        }
      });
    • justo lo que estaba buscando, quería establecer un onClick, muy interesante, usted tiene que reemplazar el valor predeterminado de botones
    • recibiendo el error: El método setButton(int, String, new DialogInterface.OnClickListener(){}) no está definido por el tipo de DatePickerActivity.DatePickerFragment
    • Eso es lo que quiero. Gracias esilver. 🙂
    • hola mostrar botón cancelar ,pero onclick del botón no funciona
    • Ahora puede usted por favor decirme cómo saber dentro de mi onclick del botón de la fecha en la cual el usuario ha sido creado ?? me refiero a que en el interior sobre la función que quiero aa, mm, dd coz pondré de nuevo en mi edittext ??
    • Trabajó como un encanto! onCancel en DialogFragment en realidad es bastante confuso!
    • por desgracia DialogInterface ha quedado obsoleta ya que la API de 3

  2. 6

    Si quieres realizar una acción diferente dependiendo de si el usuario selecciona una fecha o no se puede utilizar un onDismiss controlador. Asegúrese de establecer un valor Booleano (por ejemplo, «isDataSet») para indicar si el usuario selecciona una fecha o no. He aquí un ejemplo:

    //Date Picker Dialog
       public void showDatePickerDialog(View view) {
       int year, month, day;
       isDataSet = false;  //this is used by the onDismiss handler
    
    //Set initial time period in DatePicker to current month
       calendarCurrent = Calendar.getInstance(); 
       month = calendarCurrent.get(Calendar.MONTH);
       day =   calendarCurrent.get(Calendar.DAY_OF_MONTH);
       year =  calendarCurrent.get(Calendar.YEAR);
    
       DatePickerDialog datePickerDialog = new DatePickerDialog(YourActivity.this, dateSetListener, year, month, day );
       datePickerDialog.setOnDismissListener(mOnDismissListener);
       datePickerDialog.show();
       datePickerDialog_visible=true;  //indicate dialog is up
     } //[END showDatePickerDialog] 
    
    //onDismiss handler
    private DialogInterface.OnDismissListener mOnDismissListener =
            new DialogInterface.OnDismissListener() {
                public void onDismiss(DialogInterface dialog) {
                    datePickerDialog_visible=false;  //indicate dialog is cancelled/gone
                    if (isDataSet) {  //[IF date was picked
                        //do something, date now selected
                    } else {
                        //do someething else, dialog cancelled or exited
                    }   
                }
            };
  3. 4
    DatePickerDialog dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
    
    
                }
            }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
    
            dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                @Override
                public void onCancel(DialogInterface dialogInterface) {
    
                }
            });
            dialog.show();
  4. 3

    Desde DatePickerDialog es un Dialog, es compatible con los siguientes:

    setOnCancelListener(OnCancelListener listener)
    setOnDismissListener(OnDismissListener listener)

    El uso de los oyentes, usted puede identificar todos los despidos de la fecha en el selector de cuadro de diálogo. El primero sería la respuesta a la pregunta, el segundo es para la finalización.

  5. 1

    DatePickerDialog ahora expone una onCancel oyente.

    DatePickerDialog datePickerDialog = DatePickerDialog.newInstance(new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePickerDialog datePickerDialog, int year, int month, int day) {
                //Do whatever you want when the date is selected.
                editText.setText(String.format("%04d-%02d-%02d", year, month+1, day));
            }
        }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH));
    
        datePickerDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialog) {
    
            }
        });
  6. 0

    En esta parte del código:

     private DatePickerDialog.OnDateSetListener mDateSetListener =
                new DatePickerDialog.OnDateSetListener() {
    
                    public void onDateSet(DatePicker view, int year, 
                                          int monthOfYear, int dayOfMonth) {
                        mYear = year;
                        mMonth = monthOfYear;
                        mDay = dayOfMonth;
                        updateDisplay();
                    }
                };

    que tienen que implementar también onClick():

    public void  onClick  (DialogInterface  dialog, int which) {
       if (which == Button.NEGATIVE) {
          //Cancel
       }
    }

    API para El botón.NEGATIVO

    • ambos no están funcionando
    • nunca llamadas evento onClick.
    • no es de trabajo, no intente esto
  7. 0

    El siguiente código me ayudó a resolver un problema con el botón Cancelar para no cerrar la ventana de selector de Fecha. Gracias a eSilver para la solución.

    dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() 
    {
        public void onClick(DialogInterface dialog, int which) {
            if (which == DialogInterface.BUTTON_NEGATIVE) {
                datePickerPlugin.success(new PluginResult(PluginResult.Status.OK, ""), callBackId);
                dateDialog.hide();
            }
        }
    });
    • Ahora puede usted por favor decirme cómo saber dentro de mi onclick del botón de la fecha en la cual el usuario ha sido creado ?? me refiero a que en el interior sobre la función que quiero aa, mm, dd coz pondré de nuevo en mi edittext ??
  8. 0

    Lo siento por surgiendo antigua pregunta, pero me enfrenté a un problema similar y escribió simple sucesor de la norma DatePickerDialog con un comportamiento adecuado. Ver en este tema. espero que esto ayude.

  9. 0
    public void showDatePicker() {
    
            final Calendar c = Calendar.getInstance();
            int year = c.get(Calendar.YEAR);
            int month = c.get(Calendar.MONTH);
            int day = c.get(Calendar.DAY_OF_MONTH);
    
            DatePickerDialog datePicker = new DatePickerDialog(getActivity(), (view, year1, month1, day1) -> {
                Calendar c1 = Calendar.getInstance();
                c1.set(year1, month1, day1);
                Date date = c1.getTime();
                SimpleDateFormat formatter = new SimpleDateFormat("dd MMMM yyyy");
                String d = formatter.format(date);
    //           btnDatePicker.setText(d);
    //           selectedDate = d;
            }, year, month, day) {
                @Override
                public void onClick(@NonNull DialogInterface dialog, int which) {
                    super.onClick(dialog, which);
                    if (which == DialogInterface.BUTTON_POSITIVE) {
                    } else if (which == DialogInterface.BUTTON_POSITIVE) {
    
                    }
                }
            };
    
            datePicker.getDatePicker().setMinDate(System.currentTimeMillis());
            datePicker.show();
        }
  10. 0

    He añadido un poco de código adicional para @PeteH gran respuesta (que proporciona para reaccionar a usuario pulsando fecha o cancelación).

    private void showDatePickerDialog() {
        final int[] year = new int[1];
        final int[] month = new int[1];
        final int[] day = new int[1];
        isDataSet = false;  //this is used by the onDismiss handler
    
        //Set initial time period in DatePicker to current month
        Calendar calendarCurrent = Calendar.getInstance();
        month[0] = calendarCurrent.get(Calendar.MONTH);
        day[0] =   calendarCurrent.get(Calendar.DAY_OF_MONTH);
        year[0] =  calendarCurrent.get(Calendar.YEAR);
    
        DatePickerDialog datePickerDialog = new DatePickerDialog(
                MyActivity,
                new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker datePicker, int y, int m, int d) {
                isDataSet =true;
                //user confirms date
                year[0] =y;
                month[0] = m;
                day[0] =d;
    
                //do something with date selected
    
            }
        },
                year[0],
                month[0],
                day[0]
        );
        datePickerDialog.setOnDismissListener(mOnDismissListener);
        datePickerDialog.show();
    }
    private DialogInterface.OnDismissListener mOnDismissListener =new DialogInterface.OnDismissListener() {
        public void onDismiss(DialogInterface dialog) {
            if (!isDataSet){
    
                //do something if user cancels
    
        }
    };
  11. -3

    Intente esto:

    if (resultCode == RESULT_CANCELED) {
        Toast toast = Toast.makeText(this,"Datepicker Canceled", 10000);
        toast.show();
        return;
    }
    • en cuyo caso se debe utilizar?
    • usted será despedir a un selector de fecha de la actividad en el Clic, por lo que en el public void onActivityResult() evento u puede llamar a este código public void onActivityResult() { if (resultCode == RESULT_CANCELED) { Brindis brindis = Toast.makeText(this,»Datepicker Cancled», 10000); toast.show(); return; } }
    • Ni idea de lo que se trata – no hay un DatePickerActivity, es un diálogo, por lo que permanece dentro de la actividad.

Dejar respuesta

Please enter your comment!
Please enter your name here