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.
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);
}
};
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();
}
});
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():
});
ç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));
}
}