TimePicker Dialog Box with an EditText Button

I already have a DatePicker that appears when the user clicks on the EditText field

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(); } }); 

I tried doing TimePicker in the same way, but couldn't get it to work. This is my attempt to make it work.

  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(); } }); 

Is it not possible to do it the way I did it for DatePicker?

I even tried to make a TimePicker popup as soon as the EditText field is clicked using this code.

  eReminderTime.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub showDialog(TIME_DIALOG_ID); } }); 

For some reason, when I logged into Android Studio, "showDialog" was jammed.

Can someone give me advice on where I am going wrong? Or will I just have to use Custom DialogFragment?

+64
android android-timepicker
Jul 27 '13 at 20:00
source share
7 answers
 eReminderTime.setText( "" + selectedHour + ":" + selectedMinute); 

Your missing + between "" and the selected clock, setText methods take only one line, so you need to combine all the parts (the first quotes are most likely not needed).

 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, true);//Yes 24 hour time mTimePicker.setTitle("Select Time"); mTimePicker.show(); } }); 

This should fix your second error, you did not specify the last parameter. Constructors TimePickerDialog

+148
Jul 27 '13 at 20:13
source share

Why not write in a re-accessible way?

Create a SetTime class:

 class SetTime implements OnFocusChangeListener, OnTimeSetListener { private EditText editText; private Calendar myCalendar; public SetTime(EditText editText, Context ctx){ this.editText = editText; this.editText.setOnFocusChangeListener(this); this.myCalendar = Calendar.getInstance(); } @Override public void onFocusChange(View v, boolean hasFocus) { // TODO Auto-generated method stub if(hasFocus){ int hour = myCalendar.get(Calendar.HOUR_OF_DAY); int minute = myCalendar.get(Calendar.MINUTE); new TimePickerDialog(ctx, this, hour, minute, true).show(); } } @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { // TODO Auto-generated method stub this.editText.setText( hourOfDay + ":" + minute); } } 

Then call it from the onCreate function:

  EditText editTextFromTime = (EditText) findViewById(R.id.editTextFromTime); SetTime fromTime = new SetTime(editTextFromTime, this); 
+21
Dec 25 '14 at 13:00
source share

You can use the code below in the onclick edittext listener

  TimePickerDialog timePickerDialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() { @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { tv_time.setText(hourOfDay + ":" + minute); } }, hour, minute, false); timePickerDialog.show(); 

You can see the full code in the example Android application.

+5
Nov 15 '16 at 9:55
source share

I donโ€™t know if this will work for you, it works just fine for me.

Create a method for the date and time selection dialog.

 private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { // when dialog box is called, below method will be called. // The arguments will be working to get the Day of Week to show it in a special TextView for it. public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) { String year1 = String.valueOf(selectedYear); String month1 = String.valueOf(selectedMonth + 1); String day1 = String.valueOf(selectedDay); delivDate.setText(month1 + "/" + day1 + "/" + year1); delivDay.setText(DateFormat.format("EEEE", new Date(selectedYear, selectedMonth, selectedDay - 1)).toString()); } }; 

and then, wherever you want, you can do it that way.

 public void setDateOnClick (View view) { Calendar cal = Calendar.getInstance(); DatePickerDialog datePicker = new DatePickerDialog(this, datePickerListener, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)); //Create a cancel button and set the title of the dialog. datePicker.setCancelable(false); datePicker.setTitle("Select the date"); datePicker.show(); } 

Hope you find this as your solution.

+4
Nov 20 '15 at 15:20
source share
 public void onClick1(View v) { DatePickerDialog dialog = new DatePickerDialog(this, this, 2013, 2, 18); dialog.show(); } public void onDateSet1(DatePicker view, int year1, int month1, int day1) { e1.setText(day1 + "/" + (month1+1) + "/" + year1); } 
+1
Jun 03 '16 at 5:45
source share

You did not put the last argument in TimePickerDialog .

 { public TimePickerDialog(Context context, OnTimeSetListener listener, int hourOfDay, int minute, boolean is24HourView) { this(context, 0, listener, hourOfDay, minute, is24HourView); } } 

this is TimePickerclass code. it requires a boolean argument is24HourView

+1
Nov 03 '16 at 14:40
source share
 public class **Your java Class** extends ActionBarActivity implements View.OnClickListener{ date = (EditText) findViewById(R.id.date); date.setInputType(InputType.TYPE_NULL); date.requestFocus(); date.setOnClickListener(this); dateFormatter = new SimpleDateFormat("yyyy-MM-dd", Locale.US); setDateTimeField(); private void setDateTimeField() { Calendar newCalendar = Calendar.getInstance(); fromDatePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { Calendar newDate = Calendar.getInstance(); newDate.set(year, monthOfYear, dayOfMonth); date.setText(dateFormatter.format(newDate.getTime())); } }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); } @Override public void onClick(View v) { fromDatePickerDialog.show(); } } 
0
Aug 30 '17 at 7:33
source share



All Articles