【发布时间】:2016-05-27 13:35:53
【问题描述】:
说明: 我在我的应用程序中创建了一个日历。它提供了在每月特定日期添加和删除事件等功能。 此事件保存在我的 SQLite 数据库中并从数据库中显示。无论如何,我解释了我所做的几乎所有事情。
我想要什么?
假设,我在 2016 年 12 月 14 日添加了我朋友的生日事件。那么,这个事件将在我朋友生日到来的时候触发。
我想在特定的日子触发那个事件,比如闹钟。
这是我的日历代码
public class CalendarFragment extends Fragment{
View rootView;
String str_date="";
String month="";
String year="";
ListView event_list;
String parts[];
String monthYear="";
String monthAyear="";
private SimpleDateFormat dateFormatForMonth = new SimpleDateFormat("MMM - yyyy", Locale.getDefault());
EventAdapter adapter=null;
DatabaseHandler db=null;
List<Event> list_data;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
rootView=inflater.inflate(R.layout.fragment_calendar, container, false);
event_list=(ListView)rootView.findViewById(R.id.event_listview);
final ImageButton showPreviousMonthBut = (ImageButton) rootView.findViewById(R.id.prev_button);
final ImageButton showNextMonthBut = (ImageButton) rootView.findViewById(R.id.next_button);
db=new DatabaseHandler(getContext());
final TextView year_name=(TextView)rootView.findViewById(R.id.year_name);
final CompactCalendarView compactCalendarView = (CompactCalendarView) rootView.findViewById(R.id.compactcalendar_view);
compactCalendarView.drawSmallIndicatorForEvents(true);
compactCalendarView.setCurrentDayBackgroundColor(getResources().getColor(R.color.black));
compactCalendarView.setCurrentSelectedDayBackgroundColor(getResources().getColor(R.color.dark_red));
compactCalendarView.invalidate();
year_name.setText(dateFormatForMonth.format(compactCalendarView.getFirstDayOfCurrentMonth()));
monthYear=dateFormatForMonth.format(compactCalendarView.getFirstDayOfCurrentMonth());
parts=monthYear.split("-");
month=parts[0].replace(" ","");
year=parts[1].replace(" ","");
monthAyear=month+"-"+year;
list_data=db.getAllEvents();
showData(monthAyear);
compactCalendarView.setListener(new CompactCalendarView.CompactCalendarViewListener() {
@Override
public void onDayClick(Date dateClicked) {
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("dd-MMM-yyyy");
str_date=simpleDateFormat.format(dateClicked);
dialogShow();
}
@Override
public void onMonthScroll(Date firstDayOfNewMonth) {
monthYear=dateFormatForMonth.format(firstDayOfNewMonth);
parts=monthYear.split("-");
month=parts[0].replace(" ","");
year=parts[1].replace(" ","");
monthAyear=month+"-"+year;
showData(monthAyear);
year_name.setText(dateFormatForMonth.format(firstDayOfNewMonth));
}
});
showPreviousMonthBut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
compactCalendarView.showPreviousMonth();
}
});
showNextMonthBut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
compactCalendarView.showNextMonth();
}
});
//
return rootView;
}
public void dialogShow(){
final Dialog dialog=new Dialog(getContext());
dialog.setContentView(R.layout.dialog_layout);
dialog.setTitle("Add Event");
final TextView event_name=(TextView)dialog.findViewById(R.id.event_name);
final TextView event_desc=(TextView)dialog.findViewById(R.id.event_description);
final TextView event_date=(TextView)dialog.findViewById(R.id.event_date);
event_date.setText(str_date);
Button btn_save=(Button)dialog.findViewById(R.id.btn_save);
btn_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
db.addEvent(new Event(event_name.getText().toString(),event_desc.getText().toString(),event_date.getText().toString(),monthAyear));
dialog.hide();
Toast.makeText(getContext(), "Event added successfully....", Toast.LENGTH_SHORT).show();
showData(monthAyear);
}
});
dialog.show();
}
public void showData(String monthWyear){
List<Event> list_data=db.getEvent(monthWyear);
adapter=new EventAdapter(getActivity(),list_data);
event_list.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.findItem(R.id.spinner).setVisible(false);
super.onCreateOptionsMenu(menu, inflater);
}
}
请帮帮我,我该怎么办?
【问题讨论】:
-
使用广播接收器
-
是的,我知道但是如何将日期设置为 broadcaseReciver????
-
你必须每 24 小时调用一次后台服务!
-
您可以在“dialogShow()”->“btn_save”点击事件中创建警报。您已将选定的日期时间存储在“str_date”中。从此“str_date”变量中,您可以获得日期、月份和年份。