我正在Android Studio中处理日历项目。当我点击日期时,它会打开一个新的活动。问题是如果已经选择了一个日期(比如当你打开一个日历时,你可以看到当前日期已被选中),当我点击它时,它没有给我回复。我怎么能改变这个。当我在Android虚拟设备中测试应用程序时,这不是问题,但是当我在手机中安装应用程序时,出现了这个问题。
检查我提供的照片,我选择的日期没有给出回复,但是当我在AVD上测试它时,如果我点击选定的日期,它会给我回复。
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);
}
});
}
任何形式的帮助将不胜感激。
答案 0 :(得分:0)
我认为这是记录在案的行为。
您在CalendarView
中选择当前日期,然后再次点击它。 "选择"一天没有改变,对吗?因此,OnDateChangeListener
。onSelectedDayChange
不应该被解雇,因为实际上选定的日期并没有改变。
您可以尝试通过最初不选择当前日来解决此问题。
如果此行为自动出现,请尝试将所选日期设置为null
。
通过这种方式,即使有人选择当天,您也应该触发回调。
如果这不可行,并且您必须以某种方式预先选择,您可以尝试手动触发回调,即onStart
左右