android - 从日期和时间选择器中选择日期和时间后,如何将它们作为参数传递给日历的 'Create Event' 函数?

标签 android android-calendar android-datepicker android-timepicker

我有一个 Android Studio 的日期和时间选择器小部件,我从中选择了特定的日期 (dd-mm-yy) 格式和时间 (hr:min) 格式。

现在,在同一个 Activity 中,我有一个“提交”按钮;通过单击它,我将几个参数传递给手机 native 日历的“创建事件”。

虽然我可以成功传递标题、描述、位置等,但我不知道如何传递我从日期和时间选择器中选择的“开始-结束日期”和“开始-结束”时间参数 native 日历。

谢谢。

这里是相同的简短代码:

1>选择日期函数:

private void selectDate()
{
    final Calendar c = Calendar.getInstance();
    mYear = c.get(Calendar.YEAR);
    mMonth = c.get(Calendar.MONTH);
    mDay = c.get(Calendar.DAY_OF_MONTH);

    DatePickerDialog dpd = new DatePickerDialog(getActivity(),
            new DatePickerDialog.OnDateSetListener()
            {

                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
                {
                    Toast.makeText(getActivity(), dayOfMonth + "-" + (monthOfYear + 1) + "-" + year, Toast.LENGTH_LONG).show();
                }
            }, mYear, mMonth, mDay);
    dpd.show();
}

2>选择时间功能:

private void selectTime()
{
    final Calendar c = Calendar.getInstance();
    mHour = c.get(Calendar.HOUR_OF_DAY);
    mMinute = c.get(Calendar.MINUTE);

    TimePickerDialog tpd = new TimePickerDialog(getActivity(),
            new TimePickerDialog.OnTimeSetListener()
            {

                @Override
                public void onTimeSet(TimePicker view, int hourOfDay, int minute)
                {
                    Toast.makeText(getActivity(), hourOfDay + ":" + minute, Toast.LENGTH_LONG).show();
                }
            }, mHour, mMinute, false);
    tpd.show();
}      

3) 点击提交按钮:

Sb.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
        Intent schedule = new Intent(Intent.ACTION_INSERT);
        schedule.setType("vnd.android.cursor.item/event");
        schedule.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,   startTime);
        schedule.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime);
        schedule.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, false);
        schedule.putExtra(CalendarContract.Events.TITLE, "Title");
        schedule.putExtra(CalendarContract.Events.EVENT_LOCATION, "Location");
        startActivity(schedule);
        }
    });

我已根据建议编辑我的代码:

private void selectTime()
{
    TimePickerDialog tpd = new TimePickerDialog(getActivity(),
            new TimePickerDialog.OnTimeSetListener()
            {

                @Override
                public void onTimeSet(TimePicker view, int hourOfDay, int minute)
                {
                     c.set(Calendar.HOUR_OF_DAY, hourOfDay);
                     c.set(Calendar.MINUTE, minute);

                    Toast.makeText(getActivity(), hourOfDay + ":" + minute, Toast.LENGTH_LONG).show();
                }
            }, mHour, mMinute, false);
    tpd.show();
}

 private void selectDate()
{
    DatePickerDialog dpd = new DatePickerDialog(getActivity(),
            new DatePickerDialog.OnDateSetListener()
            {

                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
                {
                    c.set(year, monthOfYear, dayOfMonth);

                    Toast.makeText(getActivity(), dayOfMonth + "-" + (monthOfYear + 1) + "-" + year, Toast.LENGTH_LONG).show();
                }
            }, mYear, mMonth, mDay);
    dpd.show();
}

现在,每次我创建新 Activity 时,时间和日期都会完美更改/更新!谢谢

最佳答案

您可以创建一个Calendar 实例变量:

Calendar calendar = Calendar.getInstance();

onDateSet()onTimeSet() 设置它的值:

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    calendar.set(year, monthOfYear, dayOfMonth);
}

// ...

@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute)
{
    calendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
    calendar.set(Calendar.MINUTE, minute);
}

然后将此 Calendar 实例的值作为纪元的毫秒传递:

schedule.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,
    calendar.getTimeInMillis());

关于android - 从日期和时间选择器中选择日期和时间后,如何将它们作为参数传递给日历的 'Create Event' 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39316732/

相关文章:

android - 当可见性从 GONE 变为 VISIBLE 时,TabLayout 文本消失

android - 在弹出窗口中显示 RecyclerView

Android 显示星期几

Android - OnDateChangedListener - 你如何设置这个?

java - Calendar.getInstance() 在 Android Studio 中给出错误

android - 在 ContentProvider 中使用 rawQuery 是一种好习惯吗?

android - 在 Android 中将 JPEG 图像保存为视频

android - 如何在日历中为 android 中的特定事件打开编辑屏幕....?

android - 箭去哪儿了?

java - Android 显示日期从一周到另一周(星期四到星期四)