gpt4 book ai didi

java - 不显示 android timePicker 对话框的当前时间

转载 作者:行者123 更新时间:2023-11-30 01:35:30 26 4
gpt4 key购买 nike

我有时间在我的应用程序中使用 editText。单击时,会弹出TimePicker对话框

    timeIn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { //shows timePick
isEdited=true;
Fragment fragDialog = getSupportFragmentManager().findFragmentByTag("TimePicker");
if (fragDialog == null) { // Fragment not added
tp.setFlag(TimePick.FLAG_START_DATE);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
tp.show(ft, "TimePicker");
} else {

// already active
}
}
});


public static class TimePick extends android.support.v4.app.DialogFragment implements TimePickerDialog.OnTimeSetListener {

public static final int FLAG_START_DATE = 00;
public static final int FLAG_END_DATE = 01;
private int flag = 00;

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity()));
}

public void setFlag(int i) {
flag = i;
}


@Override
public void onTimeSet(TimePicker view, int hourofDay, int minute) {

if (flag == FLAG_START_DATE) {
timeIn.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
TimeIn = timeIn.getText().toString();
}
if (flag == FLAG_END_DATE) {
timeOut.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
TimeOut = timeOut.getText().toString();
}



}

}

选择的时间可以是timeIn中的setText。但是,当我再次单击 timeIn editText 时,timePicker 对话框 会弹出当前时间。是否可以让它显示所选时间而不是当前时间?如果是第一次点击,则只显示当前时间。

最佳答案

这不是你在这里做的吗

final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
return new TimePickerDialog(getActivity(), this, hour, minute, DateFormat.is24HourFormat(getActivity()));

您正在将当前时间传递给对话框,这就是它显示当前时间的原因。

解决方案:

保存选定的时间并在创建对话框时将其传递给类,并在此代码中使用该时间。如果您没有任何选定时间,则使用当前时间。一个小的 if-else block 和一些变量就可以了。

在外部类中定义这些变量。

public static int inHour = -1;
public static int inMin = -1;
public static int outHour = -1;
public static int outMin = -1;

像这样更新 onTimeSet 方法

if (flag == FLAG_START_DATE) {
inHour = hourofDay;
inMin = minute;
timeIn.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
TimeIn = timeIn.getText().toString();
}
else if (flag == FLAG_END_DATE) {
outHour = hourofDay;
outMin = minute;
timeOut.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute));
TimeOut = timeOut.getText().toString();
}

onCreateDialog 中的当前代码替换为

final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int min = c.get(Calendar.MINUTE);
if((flag == FLAG_START_DATE) && inHour != -1 && inMin != -1)
{
hour = inHour;
min = inMin;
}
else if((flag == FLAG_END_DATE) && outHour != -1 && outMin != -1)
{
hour = outHour;
min = outMin;
}

return new TimePickerDialog(getActivity(), this, hour, min, DateFormat.is24HourFormat(getActivity()));

关于java - 不显示 android timePicker 对话框的当前时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35154936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com