问题是每当我从 DatePiker 选择日期时,它就会在 TextView
中显示当前日期
如何在TextView
中设置选定的日期?
如果我打开此 Activity ,那么如何设置动态日期,然后它会在 TextView 中自动设置。
下面的代码打开了一个 DatePiker 对话框:
case R.id.llDueDate:
new DateTimePicker(this,null, startDateListner).showDateTimePicker();
break;
DateTimePiker.java
public class DateTimePicker {
public Activity mActivity;
private Date mDate;
private Calendar calendar;
private int year, month, day, hour, min;
private DateTimeSelectedListner listner;
public interface DateTimeSelectedListner {
public void onDateTimeSelected(Date date);
}
public DateTimePicker(Activity activity, Date date, DateTimeSelectedListner listner) {
this.mActivity = activity;
this.listner = listner;
this.calendar = Calendar.getInstance();
if(mDate != null){
this.mDate = mDate;
calendar.setTime(mDate);
} else {
mDate = calendar.getTime();
}
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
hour = calendar.get(Calendar.HOUR_OF_DAY);
min = calendar.get(Calendar.MINUTE);
}
public void showDateTimePicker(){
View v = mActivity.getLayoutInflater().inflate(R.layout.dialog_datetime, null);
DatePicker datePicker = (DatePicker) v.findViewById(R.id.datePicker);
TimePicker timePicker = (TimePicker) v.findViewById(R.id.timePicker);
datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() {
public void onDateChanged(DatePicker view, int year, int month, int day) {
DateTimePicker.this.year = year;
DateTimePicker.this.month = month;
DateTimePicker.this.day = day;
updateDateTime();
}
});
timePicker.setCurrentHour(hour);
timePicker.setCurrentMinute(min);
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
public void onTimeChanged(TimePicker view, int hour, int min) {
DateTimePicker.this.hour = hour;
DateTimePicker.this.min = min;
updateDateTime();
}
});
new AlertDialog.Builder(mActivity)
.setView(v)
.setTitle(R.string.date_picker_title)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
listner.onDateTimeSelected(mDate);
}
})
.create().show();
}
public void showDatePicker(){
View v = mActivity.getLayoutInflater().inflate(R.layout.dialog_date, null);
DatePicker datePicker = (DatePicker) v.findViewById(R.id.datePicker);
datePicker.init(year, month, day, new DatePicker.OnDateChangedListener() {
public void onDateChanged(DatePicker view, int year, int month, int day) {
DateTimePicker.this.year = year;
DateTimePicker.this.month = month;
DateTimePicker.this.day = day;
updateDateTime();
}
});
new AlertDialog.Builder(mActivity)
.setView(v)
.setTitle(R.string.title_select_date_of_birth)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
listner.onDateTimeSelected(mDate);
}
})
.create().show();
}
public void updateDateTime() {
mDate = new GregorianCalendar(year, month, day, hour, min).getTime();
}
}
下面的代码是在 TextView
public DateTimePicker.DateTimeSelectedListner startDateListner = new DateTimePicker.DateTimeSelectedListner() {
@Override
public void onDateTimeSelected(Date date) {
txtDateTime.setText(Util.getInstance(AddTodoActivity.this).convertDateToddMMMyyyyhmma(date));
}
};
ConvertDateToddMMyyy
函数:
public String convertDateToddMMMyyyyhmma(Date mDate) {
String outputPattern = "dd-MMM-yyyy h:mm a";
SimpleDateFormat outputFormat = new SimpleDateFormat(outputPattern);
String str = outputFormat.format(mDate);
return str;
}
这个对话框总是选择当前日期而不是选定的日期,所以我错过了一些代码或错误
最佳答案
试试这个代码:
final Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dp = new DatePickerDialog(Activity.this, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
textView.setText(dayOfMonth + "-"
+ (monthOfYear + 1) + "-" + year);
}
}, year, month, day);
dp.show();
关于java - 在 TextView 中设置选定的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49892002/