Eu já tenho um DatePicker que aparece quando o usuário clica no campo 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();
}
});
Tentei fazer um TimePicker de maneira semelhante, mas não consegui fazê-lo funcionar. Esta é a minha tentativa de fazer funcionar
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();
}
});
É impossível fazer da mesma forma que fiz para o DatePicker?
Eu tentei até mesmo fazer um TimePicker aparecer depois que o campo EditText é clicado com este código.
eReminderTime.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog(TIME_DIALOG_ID);
}
});
Por alguma razão, quando entrei no Android Studio, o 'showDialog' foi pontuado.
Alguém pode me dar dicas sobre onde estou errado? Ou terei de usar um DialogFragment personalizado?
android
android-timepicker
Mark O'Sullivan
fonte
fonte
Respostas:
Os métodos que faltam
+
entre a""
hora e a hora selecionadasetText
usam apenas uma única string, então você precisa concatenar todas as partes (as primeiras aspas são provavelmente desnecessárias).Isso deve corrigir seu segundo erro, você não estava fornecendo o último parâmetro. Construtores TimePickerDialog
fonte
Por que não escrever de forma reutilizável?
Crie a classe SetTime:
Em seguida, chame-o da função onCreate:
fonte
Você pode usar o código abaixo no listener onclick de edittext
Você pode ver o código completo em Android timepicker example
fonte
Eu estendi a boa solução reutilizável do @Sumoanand para suportar a mudança de foco e os ouvintes de clique ao alterar o tempo várias vezes. Também atualizando o calendário seletor para lembrar a última hora selecionada + formatação HH: mm
Uso de onCreate:
fonte
Eu não sei se isso vai funcionar para você, funciona muito bem para mim.
Crie um método para a caixa de diálogo do seletor de data / hora.
e então, onde você quiser, você pode fazer assim
espero que você encontre esta como sua solução.
fonte
Você não colocou o último argumento no
TimePickerDialog
.este é o código do
TimePickerclass
. requer um argumento booleanois24HourView
fonte
fonte
fonte
Para mim, o diálogo aparece mais de um se eu clicar no texto de edição dpFlightDate mais de uma vez, o mesmo para o diálogo do temporizador. como posso evitar que esta caixa de diálogo apareça apenas uma vez e se o usuário clicar na segunda vez, a caixa de diálogo não deve aparecer novamente, ou seja, se a caixa de diálogo estiver na tela?
fonte