Ich habe bereits einen DatePicker, der angezeigt wird, wenn der Benutzer auf das Feld EditText klickt
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();
}
});
Ich habe versucht, einen TimePicker auf ähnliche Weise auszuführen, konnte ihn jedoch nicht zum Laufen bringen. Dies ist mein Versuch, es zum Laufen zu bringen
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();
}
});
Ist es unmöglich, es so zu machen, wie ich es für DatePicker gemacht habe?
Ich habe sogar versucht, einen TimePicker zu öffnen, sobald das EditText-Feld mit diesem Code angeklickt wurde.
eReminderTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog(TIME_DIALOG_ID);
}
});
Aus irgendeinem Grund wurde der 'showDialog' bewertet, als ich das in Android Studio eingegeben habe.
Kann mir jemand Tipps geben, wo ich falsch liege? Oder muss ich nur ein benutzerdefiniertes DialogFragment verwenden?
android
android-timepicker
Mark O'Sullivan
quelle
quelle
Antworten:
Wenn Sie eine
+
Zwischen-""
und eine ausgewählte Stunde verpassen , verwenden diesetText
Methoden nur eine einzige Zeichenfolge, sodass Sie alle Teile verketten müssen (die ersten Anführungszeichen sind wahrscheinlich nicht erforderlich).Das sollte Ihren zweiten Fehler beheben, Sie haben nicht den letzten Parameter angegeben. TimePickerDialog-Konstruktoren
quelle
Warum nicht wiederverwendbar schreiben?
SetTime-Klasse erstellen:
Rufen Sie es dann über die Funktion onCreate auf:
quelle
Sie können den folgenden Code im Onclick-Listener von edittext verwenden
Sie können den vollständigen Code im Android Timepicker-Beispiel sehen
quelle
Ich habe die schöne wiederverwendbare Lösung von @Sumoanand erweitert, um sowohl Fokuswechsel- als auch Klick-Listener zu unterstützen, wenn die Zeit mehrmals geändert wird. Aktualisieren Sie auch den Auswahlkalender, um die zuletzt ausgewählte Zeit + Formatierung HH: mm zu speichern
Verwendung von onCreate:
quelle
Ich weiß nicht, ob das für dich funktioniert, es funktioniert für mich ganz gut.
Erstellen Sie eine Methode für das Dialogfeld Datums- / Uhrzeitauswahl.
und dann, wo immer Sie wollen, können Sie es einfach so machen
Ich hoffe, Sie finden dies als Ihre Lösung.
quelle
Sie haben das letzte Argument nicht in die
TimePickerDialog
.Dies ist der Code der
TimePickerclass
. es erfordert ein boolesches Argumentis24HourView
quelle
quelle
quelle
Für mich erscheint der Dialog mehr als einmal, wenn ich mehr als einmal auf den dpFlightDate-Bearbeitungstext klicke, um den Timmer-Dialog zu starten. Wie kann ich vermeiden, dass dieser Dialog nur einmal angezeigt wird und wenn der Benutzer zum zweiten Mal klickt, darf der Dialog nicht erneut angezeigt werden, dh wenn der Dialog auf dem Bildschirm angezeigt wird?
quelle