J'ai déjà un DatePicker qui apparaît lorsque l'utilisateur clique sur le champ EditText
eReminderDate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//To show current date in the datepicker
Calendar mcurrentDate = Calendar.getInstance();
int mYear = mcurrentDate.get(Calendar.YEAR);
int mMonth = mcurrentDate.get(Calendar.MONTH);
int mDay = mcurrentDate.get(Calendar.DAY_OF_MONTH);
DatePickerDialog mDatePicker;
mDatePicker = new DatePickerDialog(AddReminder.this, new OnDateSetListener() {
public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) {
// TODO Auto-generated method stub
/* Your code to get date and time */
selectedmonth = selectedmonth + 1;
eReminderDate.setText("" + selectedday + "/" + selectedmonth + "/" + selectedyear);
}
}, mYear, mMonth, mDay);
mDatePicker.setTitle("Select Date");
mDatePicker.show();
}
});
J'ai essayé de faire un TimePicker de la même manière mais je n'ai pas réussi à le faire fonctionner. C'est ma tentative de le faire fonctionner
eReminderTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Calendar mcurrentTime = Calendar.getInstance();
int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
int minute = mcurrentTime.get(Calendar.MINUTE);
TimePickerDialog mTimePicker;
mTimePicker = new TimePickerDialog(AddReminder.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
eReminderTime.setText( ""selectedHour + ":" + selectedMinute);
}
}, hour, minute);
mTimePicker.setTitle("Select Time");
mTimePicker.show();
}
});
Est-il impossible de le faire de la même manière que je l'ai fait pour DatePicker?
J'ai même essayé de faire apparaître un TimePicker une fois que le champ EditText est cliqué avec ce code.
eReminderTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog(TIME_DIALOG_ID);
}
});
Pour une raison quelconque, lorsque je l'ai entré dans Android Studio, le «showDialog» a été éliminé.
Quelqu'un peut-il me donner des conseils pour savoir où je me trompe? Ou vais-je simplement devoir utiliser un DialogFragment personnalisé?
android
android-timepicker
Mark O'Sullivan
la source
la source
Réponses:
Il manque une heure
+
entre""
et une heure sélectionnée, lessetText
méthodes ne prennent qu'une seule chaîne, vous devez donc concaténer toutes les parties (les premiers guillemets sont probablement inutiles).Cela devrait corriger votre deuxième erreur, vous ne fournissiez pas le dernier paramètre. Constructeurs TimePickerDialog
la source
Pourquoi ne pas écrire de manière réutilisable?
Créez la classe SetTime:
Puis appelez-le depuis la fonction onCreate:
la source
Vous pouvez utiliser le code ci-dessous dans l'écouteur onclick d'edittext
Vous pouvez voir le code complet à l' exemple de timepicker Android
la source
J'ai étendu la belle solution réutilisable de @Sumoanand pour prendre en charge à la fois le changement de focus et les écouteurs de clic lors du changement d'heure plusieurs fois. Mise à jour également du calendrier du sélecteur pour se souvenir de la dernière heure sélectionnée + formatage HH: mm
Utilisation depuis onCreate:
la source
Je ne sais pas si cela fonctionnera pour vous, cela fonctionne très bien pour moi.
Créez une méthode pour la boîte de dialogue de sélection de date / heure.
et puis, où tu veux tu peux le faire comme ça
j'espère que vous trouverez cela comme votre solution.
la source
Vous n'avez pas mis le dernier argument dans le
TimePickerDialog
.c'est le code du
TimePickerclass
. il nécessite un argument booléenis24HourView
la source
la source
la source
Pour moi, le dialogue apparaît plus d'un si je clique sur le texte d'édition dpFlightDate plus d'une fois même pour la boîte de dialogue du minuteur. comment puis-je éviter que cette boîte de dialogue n'apparaisse qu'une seule fois et si l'utilisateur clique la deuxième fois la boîte de dialogue ne doit plus apparaître, c'est-à-dire si la boîte de dialogue est à l'écran?
la source