TimePicker boîte de Dialogue en cliquant sur EditText
J'ai déjà reçu un DatePicker qui apparaît lorsque l'utilisateur clique sur le EditText champ
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 d'une manière similaire, mais a été incapable de le faire fonctionner. C'est ma tentative de 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 similaire à la façon dont je l'ai fait pour DatePicker?
J'ai essayé, même juste une TimePicker pop-up une fois que le EditText champ 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, quand je suis entré dans Android Studio le "showDialog' a été marqué à l'extérieur.
Quelqu'un peut-il me donner des conseils sur les endroits où je vais mal? Ou suis-je tout simplement allez avoir à utiliser un DialogFragment?
- Ce qui ne fait pas travailler dans votre deuxième bloc de code?, c'est juste qu'il apparaît pas, qu'il ne compile pas?
- Affiche une erreur à la setText partie entre les "" et selectedHour, dit un ',' ou un ')' est nécessaire, mais quand je mets un ',' dit-on "ne peut pas résoudre méthode setText(java.lang.String, java.lang.String)"
Vous devez vous connecter pour publier un commentaire.
Votre manque un
+
entre""
et sélectionné heure,setText
méthodes prennent seulement une chaîne unique, vous avez besoin de concaténer toutes les parties (la première des citations sont probablement inutiles).Qui devrait résoudre votre deuxième erreur, vous n'avez pas à fournir le dernier paramètre.
TimePickerDialog Constructeurs
Pourquoi ne pas écrire dans un ré-utilisable ?
Créer SetTime classe:
Ensuite l'appeler à partir de la fonction onCreate:
Vous pouvez utiliser le code ci-dessous dans le onclick auditeur de edittext
Vous pouvez voir le code complet à Android timepicker exemple
Je ne sais pas si cela va fonctionner pour vous, il fonctionne pour moi très bien.
Créer une méthode pour la Date/Heure de la boîte de dialogue sélecteur.
et puis, partout où vous le souhaitez, vous pouvez faire exactement comme ce
espérons que vous trouverez ce que votre solution.
J'ai étendu la belle réutilisables solution de @Sumoanand pour soutenir à la fois changement de focus et cliquez sur les auditeurs lors de la modification de l'heure à plusieurs reprises. Également mettre à jour le sélecteur de calendrier pour se souvenir de la dernière heure choisie + mise en forme HH:mm
Utilisation de onCreate:
Vous n'avez pas mis le dernier argument dans la
TimePickerDialog
.c'est le code de la
TimePickerclass
. il nécessite un argument booléenis24HourView
Pour moi, le dialogue s'affiche plus d'un si je clique sur le dpFlightDate modifier le texte plus d'une fois même pour le timmer boîte de dialogue .
comment puis-je éviter cette boîte de dialogue n'apparaisse qu'une fois et si l'utilisateur clique sur le 2ème temps de la boîte de dialogue ne doit pas apparaître de nouveau, c'est à dire si dialogue sur l'écran ?