代码之家  ›  专栏  ›  技术社区  ›  vlad-ardelean

CalendarView getDate方法返回当前日期,而不是所选日期。。。我做错了什么?

  •  9
  • vlad-ardelean  · 技术社区  · 9 年前

    我的日历视图无法返回所选日期,而是返回一些始终指向今天的默认日期。

    我当然在更改日历中选择的日期,它确实显示为已更改。我试图在调试模式下检查视图,但没有找到任何东西。

    <CalendarView
                                android:id="@+id/view_calendar_create_event_date"
                                android:layout_width="wrap_content"
                                android:layout_height="0dp"
                                android:layout_weight="1" />
    

    这是从事件侦听器调用的

    protected void createEvent(View view){
            TextView eventNameView = (TextView) this.findViewById(R.id.createEventNameInput);
            String eventName = eventNameView.getEditableText().toString();
    
            CalendarView eventOccursOnView = (CalendarView) this.findViewById(R.id.view_calendar_create_event_date);
            long eventOccursOn = eventOccursOnView.getDate();
            Date temporary = new Date(eventOccursOn);
    
            Event newEvent = new Event(eventName, "", 0, 0, eventOccursOn);
            newEvent.save(view.getContext());
        }
    

    这就是我设置事件侦听器的方式

    saveButton.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View view) {
                    // Create the event
                    EventDetailsActivity.this.createEvent(view);
    
                    // Notify the user
                    Snackbar.make(view, "Successfully created a new event!", Snackbar.LENGTH_LONG)
                            .setAction("Action", null).show();
    
                    // Return to the previous activity
                    finish();
                }
            });
    
    1 回复  |  直到 9 年前
        1
  •  12
  •   Mithun Sarker Shuvro    7 年前

    您需要实施 setOnDateChangeListener

    long eventOccursOn;
    
    eventOccursOnView.setOnDateChangeListener(new OnDateChangeListener() {
        //show the selected date as a toast
        @Override
        public void onSelectedDayChange(CalendarView view, int year, int month, int day) {
            Toast.makeText(getApplicationContext(), day + "/" + month + "/" + year, Toast.LENGTH_LONG).show();
            Calendar c = Calendar.getInstance();
            c.set(year, month, day);
            eventOccursOn = c.getTimeInMillis(); //this is what you want to use later
        }
     });
    
    推荐文章