CalenderView的方法setOnDateChangeListener()无法正常工作

时间:2017-09-25 11:43:13

标签: java android

我正在Android Studio中处理日历项目。当我点击日期时,它会打开一个新的活动。问题是如果已经选择了一个日期(比如当你打开一个日历时,你可以看到当前日期已被选中),当我点击它时,它没有给我回复。我怎么能改变这个。当我在Android虚拟设备中测试应用程序时,这不是问题,但是当我在手机中安装应用程序时,出现了这个问题。

检查我提供的照片,我选择的日期没有给出回复,但是当我在AVD上测试它时,如果我点击选定的日期,它会给我回复。

Calendar View Image

calendarView.setOnDateChangeListener(new 
 CalendarView.OnDateChangeListener() {
    @Override
    public void onSelectedDayChange(@NonNull CalendarView calendarView, 
 int i, int i1, int i2) {
        date = i2 + "" + i1 + "" + i;
        Date = Integer.parseInt(date);
        Log.e(TAG,"int date="+Date+"");
        Log.e(TAG,"string date="+date+"");
        //firstly check if an entry exists for the current date.
        Cursor res = myDb.getAllData();

        while(res.moveToNext()) {
            if (res.getInt(0) == Date) {    
//only runs if it find the id for this date.
                StringBuffer buffer = new StringBuffer();

                buffer.append("Id :" + res.getString(0) + "\n");
                buffer.append("Event Name :" + res.getString(1) + "\n");
                buffer.append("Event Location :" + res.getString(2) + 
 "\n");
                buffer.append("Event Discription :" + res.getString(3) + 
 "\n\n");

                //when an id is present for event, than there must be an 
 entry for attendees, So search by date(id) for attendees.
                Cursor cursor = myDb2.getAllData();
                while(cursor.moveToNext()) {
                    String test=cursor.getInt(0)+"";
                    if (test.contains(date)) {
                        Log.e(TAG,"it reached here");
                        buffer.append("Event Attendee :" + 
cursor.getString(1) + "\n\n");
                    }
                }
                // show message
                showMessage("Data", buffer.toString());
                return;
            }
        }
            //if no entry is found then pass the id as Date and shift to 
activity_date_selected activity ).
            intent = new Intent(MainActivity.this, dateSelected.class);
                intent.putExtra("date message", Date);
                intent.putExtra("day message", i2);
                intent.putExtra("month message", i1);
                intent.putExtra("year message", i);
            startActivity(intent);
      }
   });
}

任何形式的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我认为这是记录在案的行为。

您在CalendarView中选择当前日期,然后再次点击它。 "选择"一天没有改变,对吗?因此,OnDateChangeListeneronSelectedDayChange不应该被解雇,因为实际上选定的日期并没有改变。

您可以尝试通过最初不选择当前日来解决此问题。 如果此行为自动出现,请尝试将所选日期设置为null。 通过这种方式,即使有人选择当天,您也应该触发回调。

如果这不可行,并且您必须以某种方式预先选择,您可以尝试手动触发回调,即onStart左右