java - 在 TextView 中设置选定的日期

标签 java android

问题是每当我从 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/

相关文章:

java - Base64 字符串到 Windows1251(西里尔字母符号)

android - 我需要使用哪个 Intent 标志,以便当我按回键时我不会再次看到该 Activity ?

android - 使用 ViewPager 更改选项卡时重新创建 fragment

Javamail API 异常 - 需要身份验证

Java 同步在退出时自动通知?这是预期的吗?

java - log4j 2 迁移桥 log4j-1.2-api.jar 缺少类

java - 如何使用 CountDownTimer 构造函数调用 Alarm Intent ?

android - ListFragment onListItemClick 不工作

android - Android 中通过 Wifi 的 Logcat(调试)

java - 在 Android 中运行单元测试时, Intent 解析为不同的进程