这是我为TimePicker获得的代码。
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()));
}
}
<?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>
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;
}
}
我发了Toast
条消息来检查我从TimePicker
中选择的内容是否正确。但每次我运行此代码时,它总是给我机器上的当前时间,而不是我从TimePicker
中选择的时间。我该如何做到这一点?谁能帮帮我吗?提前谢谢。
答案 0 :(得分:2)
使用此方法setOnTimeChangedListener(TimePicker.OnTimeChangedListener onTimeChangedListener)
和使用timepicker时的这个类。 timepicker
没有onclick听众..
答案 1 :(得分:2)
如果您在onClick()
处理程序中清除TimePicker的焦点,则可以使用其公共methods将所选时间值作为整数:
public void onClick(View v) {
...
notifyTime = ((TimePicker) findViewById(R.id.alarm_time));
notifyTime.clearFocus();
hour = notifyTime.getCurrentHour();
minute = notifyTime.getCurrentMinute();
....
}
答案 2 :(得分:0)
要阅读用户输入的时间,请使用监听器
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
updateDisplay();
}
};
答案 3 :(得分:0)
这样你就可以得到时间
Calendar mCalendar = Calendar.getInstance();
mHour = mCalendar.get(Calendar.HOUR_OF_DAY);
mMinute = mCalendar.get(Calendar.MINUTE);
TimePickerDialog timePickerDialog = new TimePickerDialog(mActivity, mTimeSetListener, mHour, mMinute, false);
private TimePickerDialog.OnTimeSetListener mTimeSetListener = new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
mCalendar.set(Calendar.MINUTE, mMinute);
SimpleDateFormat mSDF = new SimpleDateFormat("hh:mm a");
String time = mSDF.format(mCalendar.getTime());
}
}