gpt4 book ai didi

Android 日期选择器和时间选择器问题

转载 作者:行者123 更新时间:2023-11-30 04:06:09 24 4
gpt4 key购买 nike

我面临的问题是从日期和时间对话框的。我已经将它们全部分开创建了。在 onCreate 上,我在对话框中为用户设置了当前日期和时间。即 24/7/2012 作为今天的日期。每当我将 from_date 的对话框更改/单击为日期(例如:26/7/2012)时,我都会通过 setText 将 to_date 对话框的文本更改为 26/7/2012。这里出现的问题是当我打开 to_date 对话框时,对话框中显示的日期是 24/7/2012 而不是 26/7/2012。对于日期和时间选择器对话框,如何实现相同的目的。我附上了下面的代码。提前致谢。

public Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID_FROM:
Log.i("Date Case", "" + from_day);
return new DatePickerDialog(this, dateListenerfrom, from_year,
from_month, from_day);
case DATE_DIALOG_ID_TO:
Log.i("Date Case", "" + to_day);
return new DatePickerDialog(this, dateListenerto, to_year,
to_month, to_day);
case TIME_DIALOG_ID_FROM:
return new TimePickerDialog(this, timeListenerfrom, from_hours,
from_min, false);
case TIME_DIALOG_ID_TO:
return new TimePickerDialog(this, timeListenerto, to_hours, to_min,
false);

}
return null;

}

private DatePickerDialog.OnDateSetListener dateListenerfrom = new DatePickerDialog.OnDateSetListener() {

public void onDateSet(DatePicker view, int yr, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub

from_year = yr;
from_month = monthOfYear;
from_day = dayOfMonth;
// to_year = yr;
// to_month = monthOfYear;
to_day = dayOfMonth;

Log.i("From Day", "" + from_day);
Log.i("To Day", "" + to_day);
Log.i("To Cons", "" + dayOfMonth);

try {
updateDateFrom();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
};

private DatePickerDialog.OnCancelListener mDateFromCancelListener = new DatePickerDialog.OnCancelListener() {
public void onCancel(DialogInterface dialog) {

}
};

private DatePickerDialog.OnDateSetListener dateListenerto = new DatePickerDialog.OnDateSetListener() {

public void onDateSet(DatePicker view, int yr, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
to_year = yr;
to_month = monthOfYear;
to_day = dayOfMonth;

Log.i("From Day", "" + from_day);
Log.i("To Day", "" + to_day);
Log.i("To Cons", "" + dayOfMonth);

try {
updateDateTo();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
};

private void updateDateFrom() throws ParseException {

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");

try {
date_from = dateFormat.parse(from_day + "/" + from_month + "/"
+ from_year + " " + from_hours + ":" + to_min);

} catch (ParseException e) {
e.printStackTrace();
}

System.out.println("From LONG " + date_from.getTime());

from_date_builder = new StringBuilder().append(from_day).append('/')
.append(from_month + 1).append('/').append(from_year);

from_date.setText(from_date_builder.toString());

to_date.setText(new StringBuilder().append(from_day).append('/')
.append(from_month + 1).append('/').append(from_year));

}

private void updateDateTo() throws ParseException {

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");

try {
date_to = dateFormat.parse(to_day + "/" + to_month + "/" + to_year
+ " " + to_hours + ":" + to_min);

} catch (ParseException e) {
e.printStackTrace();
}

System.out.println("To LONG " + date_to.getTime());

if (date_from.getTime() <= date_to.getTime()) {
to_date_builder = new StringBuilder().append(to_day).append('/')
.append(to_month + 1).append('/').append(to_year);
to_date.setText(to_date_builder.toString());
} else {
Toast.makeText(this, "Please set proper date", Toast.LENGTH_SHORT)
.show();
}

}

private TimePickerDialog.OnTimeSetListener timeListenerfrom = new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
from_hours = hourOfDay;
from_min = minute;
try {
updateTimeFrom();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};

private TimePickerDialog.OnTimeSetListener timeListenerto = new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
to_hours = hourOfDay;
to_min = minute;
try {
updateTimeTo();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};

private void updateTimeFrom() throws ParseException {

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");

time_from = dateFormat.parse(from_day + "/" + from_month + "/"
+ from_year + " " + from_hours + ":" + from_min);

from_time_builder = new StringBuilder().append(from_hours).append(':')
.append(from_min);

from_time.setText(from_time_builder.toString());

to_time.setText(new StringBuilder().append(from_hours).append(':')
.append(from_min));

}

private void updateTimeTo() throws ParseException {

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");

time_to = dateFormat.parse(to_day + "/" + to_month + "/" + to_year
+ " " + to_hours + ":" + to_min);

if (time_from.getTime() <= time_to.getTime()
&& date_from.getTime() <= date_to.getTime()) {

to_time_builder = new StringBuilder().append(to_hours).append(':')
.append(to_min);

to_time.setText(to_time_builder.toString());
}

else {
Toast.makeText(this, "Please set proper date", Toast.LENGTH_SHORT)
.show();
}

System.out.println("Thi is in the time to ");

}

这是onClick{

if (v == from_date) {
showDialog(DATE_DIALOG_ID_FROM);
}

if (v == to_date) {
showDialog(DATE_DIALOG_ID_TO);
}

if (v == from_time) {
showDialog(TIME_DIALOG_ID_FROM);
}
if (v == to_time) {
showDialog(TIME_DIALOG_ID_TO);
}

最佳答案

您必须在您的 Activity 中实现 Below 方法来更新要在对话框中显示的日期/时间。

protected void onPrepareDialog(int id, Dialog dialog) {
switch (id) {
case DATE_DIALOG_ID_TO:
case DATE_DIALOG_ID_FROM:
((DatePickerDialog) dialog).updateDate(mYear, mMonth, mDay);
break;
}
}

关于Android 日期选择器和时间选择器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11627124/

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