Android - OnDateChangedListener - how do you set this?

后端 未结 5 1508
挽巷
挽巷 2020-11-29 07:48

There is an event listener in Android called DatePicker.OnDateChangedListener. I am trying to set a DatePicker view\'s on date changed listener as follows:

相关标签:
5条回答
  • 2020-11-29 08:27

    Once you've created your DatePicker, you need to initialize it with the date you want to display at first. That's the point at which you can add your listener.

    See DatePicker.init(int, int, int, OnDateChangedListener).

    0 讨论(0)
  • 2020-11-29 08:30

    Something like this:

    DatePicker myDatePicker = (DatePicker) findViewById(R.id.my_date_picker);
    myDatePicker.getCalendarView().setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
        @Override
        public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
            Log.d("tag", "finally found the listener, the date is: year " + year + ", month "  + month + ", dayOfMonth " + dayOfMonth);
        }
    });
    
    0 讨论(0)
  • 2020-11-29 08:33

    Call init() on the DatePicker object.

    0 讨论(0)
  • 2020-11-29 08:38

    This view is in fact a combination of four views, and they are :

    Three Spinners

    One CalendarView

    As of the OnDateChangeListener, the object you passed in to the init method will be simply passed to the contained CalendarView, and I believe that you know that there is a setOnDateChangeListener method in the good old CalendarView...... ......

    In the DatePicker class, there is a method called the getCalendarView, and it is the method you can call if you want to get your hands on the contained CalendarView.

    Once you get your hands on the contained CalendarView, then, needlessly to say, you can call its setOnDateChangeListener

    0 讨论(0)
  • 2020-11-29 08:40

    Best way is

            DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker);
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {
    
                    @Override
                    public void onDateChanged(DatePicker datePicker, int year, int month, int dayOfMonth) {
                        Log.d("Date", "Year=" + year + " Month=" + (month + 1) + " day=" + dayOfMonth);
    
                    }
                });
    
    0 讨论(0)
提交回复
热议问题