Не удается сгенерировать событие при касании выбранной даты в CalendarView на Android

#java #android #events #view #calendar

#java #Android #Мероприятия #Вид #Календарь

Вопрос:

Я столкнулся с проблемой при использовании CalendarView.

Я хочу, чтобы пользователь, который находится в activity1, зашел в календарь в activity2, а затем коснулся даты, а затем перешел к activity3.

В настоящее время, если пользователь хочет коснуться уже выбранной даты (по умолчанию он использует сегодняшнюю дату), чтобы двигаться дальше, он не может, потому что единственным событием для календаря является OnDateChangeListener , и я не могу заставить его работать с OnClick или OnTouch.

Кто-нибудь знает способ заставить это работать?

Это то, что я пробовал:

 public class CalendarioActivity extends Activity {
private CalendarView calendar;
@Override
protected void onCreate(Bundle SavedInstanceState) {
    super.onCreate(SavedInstanceState);
    calendar = new CalendarView(this);
    calendar.setOnDateChangeListener(_DateSetListener);
    calendar.setOnClickListener(_OnClickListener);
    setContentView(calendar);
}

private OnClickListener  _OnClickListener = new OnClickListener() {
      public void onClick(View v) {
        Date date = new Date(calendar.getDate());

        Intent i=new Intent(CalendarioActivity.this,SelecionarHoraActivity.class);

        i.putExtra("data",
                    new int[] {date.getDay(),date.getMonth(),date.getYear()});
        startActivity(i);}};

private OnDateChangeListener _DateSetListener = new OnDateChangeListener() {
      public void onSelectedDayChange(CalendarView view, 
                                      int year, 
                                      int month,
                                      int dayOfMonth) {

        Intent i = new Intent(CalendarioActivity.this,
                              SelecionarHoraActivity.class);
        i.putExtra("data", new int[] {dayOfMonth, month, year});

        startActivity(i);}}; 
}
 

Ответ №1:

Вы пробовали включить CalendarView как интерактивную через calendar.setClickable(true) . Это включило бы события щелчка. Я не знаю, будет ли это сделано для отдельных дат, но это позволит вам onClickListener , если я правильно понимаю.

Ответ №2:

 this.calendarView.setOnDateChangeListener(this);