TimePicker显示不同的时间
TimePicker display different time
我做了一个editText
,用来显示TimePicker
。
static Calendar c = null;
static int hour;
static int min;
static int hour1, min1;
time = (EditText) promptView.findViewById(R.id.time);
time.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Fragment fragDialog = getActivity().getSupportFragmentManager().findFragmentByTag("TimePicker");
if (fragDialog == null) { // Fragment not added
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
tp.show(ft, "TimePicker");
} else {
// already active
}
}
});
public static class TimePick extends android.support.v4.app.DialogFragment implements TimePickerDialog.OnTimeSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
c = Calendar.getInstance();
hour = c.get(Calendar.HOUR_OF_DAY);
min = c.get(Calendar.MINUTE);
return new TimePickerDialog(getActivity(), this, hour, min, DateFormat.is24HourFormat(getActivity()));
}
@Override
public void onTimeSet(TimePicker view, int hourofDay, int minute) {
time.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
hour1 = hourofDay;
min1 = minute;
}
}
单击保存 button
时,它会将 select 编辑的时间传递给 AlarmManager
,并显示分钟和小时。
save.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Calendar alarm = Calendar.getInstance();
alarm.set(Calendar.HOUR_OF_DAY, hour1);
alarm.set(Calendar.MINUTE, min1);
alarm.set(Calendar.SECOND, 0);
Toast.makeText(getActivity(), hour1 + "" + min1, Toast.LENGTH_SHORT).show();
Intent myIntent = new Intent(getActivity(), MyReceiver.class);
pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(getActivity().ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, alarm.getTimeInMillis(), pendingIntent);
}
});
alert.setView(promptView);
alert.show();
}
假设我 select 时间为 11 小时,分钟为 20 并单击保存,Toast 正确显示 1120
。但是在第二次,我点击了保存而不点击时间editText
,Toast
应该显示00
但是它显示了之前的结果1120
。
我不能确定,一方面,我没有完整的代码,另一方面,我不知道你说的 'the second time' 是什么意思。
但是你的变量被声明为static,这意味着即使你销毁了那个对象,下次你实例化一个新对象时,这些变量将具有值他们在前一个实例中有。这是因为,静态变量在同一 class.
的所有实例之间共享和保留
public class Foo {
static int bar;
}
Foo a = new Foo();
a.bar = 3;
Foo b = new Foo();
Log.d("tag", "value = " + b.bar); // this will print 3
编辑:
如果您仍想以这种方式使用这些变量,则需要先在某处清理它们,但由您决定最佳位置。
hour1 = 0;
min1 = 0;
我做了一个editText
,用来显示TimePicker
。
static Calendar c = null;
static int hour;
static int min;
static int hour1, min1;
time = (EditText) promptView.findViewById(R.id.time);
time.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Fragment fragDialog = getActivity().getSupportFragmentManager().findFragmentByTag("TimePicker");
if (fragDialog == null) { // Fragment not added
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
tp.show(ft, "TimePicker");
} else {
// already active
}
}
});
public static class TimePick extends android.support.v4.app.DialogFragment implements TimePickerDialog.OnTimeSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
c = Calendar.getInstance();
hour = c.get(Calendar.HOUR_OF_DAY);
min = c.get(Calendar.MINUTE);
return new TimePickerDialog(getActivity(), this, hour, min, DateFormat.is24HourFormat(getActivity()));
}
@Override
public void onTimeSet(TimePicker view, int hourofDay, int minute) {
time.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
hour1 = hourofDay;
min1 = minute;
}
}
单击保存 button
时,它会将 select 编辑的时间传递给 AlarmManager
,并显示分钟和小时。
save.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Calendar alarm = Calendar.getInstance();
alarm.set(Calendar.HOUR_OF_DAY, hour1);
alarm.set(Calendar.MINUTE, min1);
alarm.set(Calendar.SECOND, 0);
Toast.makeText(getActivity(), hour1 + "" + min1, Toast.LENGTH_SHORT).show();
Intent myIntent = new Intent(getActivity(), MyReceiver.class);
pendingIntent = PendingIntent.getBroadcast(getActivity(), 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getActivity().getSystemService(getActivity().ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC, alarm.getTimeInMillis(), pendingIntent);
}
});
alert.setView(promptView);
alert.show();
}
假设我 select 时间为 11 小时,分钟为 20 并单击保存,Toast 正确显示 1120
。但是在第二次,我点击了保存而不点击时间editText
,Toast
应该显示00
但是它显示了之前的结果1120
。
我不能确定,一方面,我没有完整的代码,另一方面,我不知道你说的 'the second time' 是什么意思。
但是你的变量被声明为static,这意味着即使你销毁了那个对象,下次你实例化一个新对象时,这些变量将具有值他们在前一个实例中有。这是因为,静态变量在同一 class.
的所有实例之间共享和保留public class Foo {
static int bar;
}
Foo a = new Foo();
a.bar = 3;
Foo b = new Foo();
Log.d("tag", "value = " + b.bar); // this will print 3
编辑:
如果您仍想以这种方式使用这些变量,则需要先在某处清理它们,但由您决定最佳位置。
hour1 = 0;
min1 = 0;