web-dev-qa-db-fra.com

Comment afficher DatePickerDialog sur un clic de bouton?

Je développe une application qui nécessite que l'utilisateur sélectionne la date (jj/mm/aaaa). Je souhaite afficher une boîte de dialogue avec DatePicker au clic du bouton. une fois la date sélectionnée, elle doit apparaître dans EditText.

J'utilise Android Studio 2.2, le projet avec min sdk est 23.

Aidez-moi à faire le code requis.

44
Pratik Pitale

Le code suivant fonctionne ..

datePickerButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showDialog(0);
        }
    });

@Override
@Deprecated
protected Dialog onCreateDialog(int id) {
    return new DatePickerDialog(this, datePickerListener, year, month, day);
}

private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
    public void onDateSet(DatePicker view, int selectedYear,
                          int selectedMonth, int selectedDay) {
        day = selectedDay;
        month = selectedMonth;
        year = selectedYear;
        datePickerButton.setText(selectedDay + " / " + (selectedMonth + 1) + " / "
                + selectedYear);
    }
};
7
Pratik Pitale

enter image description here

I. Dans votre build.gradle, ajoutez la dernière bibliothèque appcompat au 24.2.1

dependencies {  
    compile 'com.Android.support:appcompat-v7:X.X.X' 
    // where X.X.X version
}

II. Faites que votre activité s'étende Android.support.v7.app.AppCompatActivity et implémente l'interface DatePickerDialog.OnDateSetListener.

public class MainActivity extends AppCompatActivity  
    implements DatePickerDialog.OnDateSetListener {

III. Créez votre DatePickerDialog en définissant un contexte, l'implémentation de l'auditeur et l'année de début, le mois et le jour du sélecteur de date.

DatePickerDialog datePickerDialog = new DatePickerDialog(  
    context, MainActivity.this, startYear, starthMonth, startDay);

IV Affichez votre dialogue sur l'écouteur d'événements de clic de votre bouton.

((Button) findViewById(R.id.myButton))
    .setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        datePickerDialog.show();
    }
});
62
saulmm
DatePickerDialog  StartTime = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                Calendar newDate = Calendar.getInstance();
                newDate.set(year, monthOfYear, dayOfMonth);
                activitydate.setText(dateFormatter.format(newDate.getTime()));
            }

        }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));

  btn_checkin.setOnClickListener(new View.OnClickListener() {
                                           @Override
                                           public void onClick(View v) {
     StartTime .show():

 });
17
M.Yogeshwaran

ça marche pour moi. si vous voulez activer l'heure future pour choisir, vous devez supprimer la date maximum. Vous devez faire comme suit.

 btnDate.setOnClickListener(new View.OnClickListener() {
                       @Override
                       public void onClick(View v) {
                              DialogFragment newFragment = new DatePickerFragment();
                                    newFragment.show(getSupportFragmentManager(), "datePicker");
                            }
                        });

            public static class DatePickerFragment extends DialogFragment
                        implements DatePickerDialog.OnDateSetListener {

                    @Override
                    public Dialog onCreateDialog(Bundle savedInstanceState) {
                        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 dialog = new DatePickerDialog(getActivity(), this, year, month, day);
                        dialog.getDatePicker().setMaxDate(c.getTimeInMillis());
                        return  dialog;
                    }

                    public void onDateSet(DatePicker view, int year, int month, int day) {
                       btnDate.setText(ConverterDate.ConvertDate(year, month + 1, day));
                    }
                }
13
Kayra