how to get hour and minute from timepicker in android
17,382
Solution 1
If you clear focus from the TimePicker in your onClick()
handler, you can use its public methods to get the selected time values as integers:
public void onClick(View v) {
...
notifyTime = ((TimePicker) findViewById(R.id.alarm_time));
notifyTime.clearFocus();
hour = notifyTime.getCurrentHour();
minute = notifyTime.getCurrentMinute();
....
}
Solution 2
Use this method setOnTimeChangedListener(TimePicker.OnTimeChangedListener onTimeChangedListener)
and this class when working with timepicker. timepicker
not onclick listener on it..
Comments
-
TheGPWorx almost 2 years
This is code I got for TimePicker.
TimePicker.java
public class TimePicker extends EditText implements android.app.TimePickerDialog.OnTimeSetListener { public interface OnTimeSetListener { public void onTimeSet(TimePicker view, int hour, int minute); } protected int hour; protected int minute; protected OnTimeSetListener onTimeSetListener; protected java.text.DateFormat timeFormat; public int getHour() { return hour; } public OnTimeSetListener getOnTimeSetListener() { return onTimeSetListener; } public void setOnTimeSetListener(OnTimeSetListener onTimeSetListener) { this.onTimeSetListener = onTimeSetListener; } public void setHour(int hour) { this.hour = hour; updateText(); } public int getMinute() { return minute; } public void setNow() { Calendar c = Calendar.getInstance(); setTime(c.get(Calendar.HOUR_OF_DAY), c.get(Calendar.MINUTE)); } public void setMinute(int minute) { this.minute = minute; updateText(); } public void setTime(int hour, int minute) { this.hour = hour; this.minute = minute; updateText(); } public TimePicker(Context context, AttributeSet attrs) { super(context, attrs); timeFormat = DateFormat.getTimeFormat(getContext()); setInputType(InputType.TYPE_DATETIME_VARIATION_DATE); setFocusable(false); setNow(); } protected void showTimePicker() { TimePickerDialog timePickerDialog; timePickerDialog = new TimePickerDialog(getContext(), this, getHour(), getMinute(), true); timePickerDialog.show(); } @Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) showTimePicker(); return super.onTouchEvent(event); } public java.text.DateFormat getTimeFormat() { return timeFormat; } public void setTimeFormat(java.text.DateFormat timeFormat) { this.timeFormat = timeFormat; updateText(); } @Override public void onTimeSet(android.widget.TimePicker view, int hour, int minute) { // TODO Auto-generated method stub setTime(hour, minute); clearFocus(); if (onTimeSetListener != null){ onTimeSetListener.onTimeSet(this, hour, minute); } } public void updateText() { Calendar cal = new GregorianCalendar(0, 0, 0, getHour(), getMinute()); setText(timeFormat.format(cal.getTime())); }
}
calendar_events.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:background="@color/maroon" tools:context="com.gpplsmje.mac.calendar.CalendarEvents" > <com.gpplsmje.mac.calendar.utils.TimePicker android:id="@+id/alarm_time" style="@android:style/Widget.Holo.Light.Spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="60" android:gravity="center" android:textColor="@color/white" /> </RelativeLayout>
CalendarEvents.java
public class CalendarEvents extends Activity implements OnClickListener { TimePicker notifyTime; Button back, cancel, done; int hour, minute, day, month, year; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.calendar_events); onNewIntent(getIntent()); notifyTime = ((TimePicker) findViewById(R.id.alarm_time)); notifyTime.setTimeFormat(DateFormat.getTimeFormat(this)); hour = notifyTime.getHour(); minute = notifyTime.getdMinute(); done.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.bDone: Toast.makeText(this, year + " " + month + " " + day + " " + hour + " " + minute , Toast.LENGTH_LONG).show(); break; } }
I made a
Toast
message to check if what I have selected from theTimePicker
is the right thing. But every time I run this code it always gives me the current time on my machine and not the time I selected from theTimePicker
. How do I accomplish this? Can any one please help me? Thanks in advance.