Mam już DatePicker, który pojawia się, gdy użytkownik kliknie pole 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();
}
});
Próbowałem zrobić TimePicker w podobny sposób, ale nie mogłem go uruchomić. To jest moja próba, aby to działało
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();
}
});
Czy nie da się tego zrobić podobnie jak w przypadku DatePicker?
Próbowałem nawet po prostu wywołać wyskakujące okienko TimePicker po kliknięciu pola EditText tym kodem.
eReminderTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog(TIME_DIALOG_ID);
}
});
Z jakiegoś powodu, kiedy wprowadziłem to do Android Studio, wynik „showDialog” został zaliczony.
Czy ktoś może mi dać wskazówki, gdzie idę źle? A może po prostu będę musiał użyć niestandardowego DialogFragment?
android
android-timepicker
Mark O'Sullivan
źródło
źródło
Odpowiedzi:
Brakuje wybranej godziny
+
między""
a wybraną godziną,setText
metody pobierają tylko jeden ciąg, więc musisz połączyć wszystkie części (pierwsze cudzysłowy są prawdopodobnie niepotrzebne).To powinno naprawić drugi błąd, ponieważ nie podano ostatniego parametru. Konstruktory TimePickerDialog
źródło
Dlaczego nie pisać w sposób wielokrotnego użytku?
Utwórz klasę SetTime:
Następnie wywołaj go z funkcji onCreate:
źródło
Możesz użyć poniższego kodu w odbiorniku onclick programu edittext
Możesz zobaczyć pełny kod na przykładzie selektora czasowego Androida
źródło
Rozszerzyłem przyjemne rozwiązanie wielokrotnego użytku @Sumoanand, aby obsługiwać zarówno zmianę ostrości, jak i słuchaczy kliknięć podczas wielokrotnej zmiany czasu. Również aktualizacja kalendarza selektora, aby zapamiętać ostatnio wybrany czas + formatowanie GG: mm
Wykorzystanie od onCreate:
źródło
Nie wiem, czy to zadziała dla ciebie, na mnie działa dobrze.
Utwórz metodę dla okna dialogowego selektora Data / Godzina.
a potem, gdziekolwiek chcesz, możesz to zrobić tak po prostu
mam nadzieję, że uznasz to za swoje rozwiązanie.
źródło
Nie umieściłeś ostatniego argumentu w
TimePickerDialog
.to jest kod
TimePickerclass
. wymaga argumentu boolowskiegois24HourView
źródło
źródło
źródło
Dla mnie dialog pojawia się więcej niż jeden, jeśli kliknę tekst edycji dpFlightDate więcej niż jeden raz to samo w oknie dialogowym timera. w jaki sposób mogę uniknąć tego, aby to okno dialogowe pojawiło się tylko raz i jeśli użytkownik kliknie po raz drugi, okno dialogowe nie może się pojawić ponownie, tj. jeśli okno dialogowe jest wyświetlane na ekranie?
źródło