美好的一天!
我有一个包含TimePicker的Dialog类。 TimePicker设置为24小时模式。 当我用小时选择时间< 12 - Picker返回时间+12小时。
例如 -
我设定了07:25 - 返回19:25。反之亦然
如果我设置19:43 - 返回07:42。并且
如果我设置12:01,例如 - TimePicker返回白痴24:01。
这个工具有什么问题?
这是我的Dialog类的完整代码:
public class TimePickerDialog extends DialogFragment {
public static final String EXTRA_TIME = "time";
@Bind(R.id.pickerTime_timePicker) TimePicker timePicker;
//// DialogFragment methods
@Override @NonNull
public Dialog onCreateDialog(Bundle savedInstanceState) {
View view = getActivity().getLayoutInflater().inflate(R.layout.picker_time, null);
ButterKnife.bind(this, view);
timePicker.setIs24HourView(true);
return new AlertDialog.Builder(getActivity())
.setView(view)
.setTitle(getString(R.string.time_picker_dialog_label))
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
sendResult(Activity.RESULT_OK);
}
})
.setNegativeButton(android.R.string.cancel, null)
.create();
}
//// Private methods
private void sendResult(int resultCode) {
if (getTargetFragment() == null) {
return;
}
Intent intent = new Intent();
intent.putExtra(EXTRA_TIME, getTimeFromTimePicker(timePicker));
getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, intent);
}
private Date getTimeFromTimePicker(TimePicker timePicker) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, timePicker.getCurrentHour());
calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute());
return calendar.getTime();
}
}
答案 0 :(得分:1)
我猜你应该使用calendar.set(日历。 HOUR_OF_DAY ,timePicker.getCurrentHour());
答案 1 :(得分:1)
把这一行,
timePicker.setCurrentHour(Calendar.getInstance().get(Calendar.HOUR_OF_DAY));
下面,
timePicker.setIs24HourView(true);
将相应地设置当前时间。 让我知道它是否适合你...
答案 2 :(得分:0)
阅读documentation 提供的示例适用于所有人,无需绑定某些内容。为什么在对话框中需要额外的逻辑?它应该负责选择时间。其他逻辑应该在您的控制器中。