我有一些关于Android日历的问题。我想添加数据库上的事件。我想要的是,当我打开我的日历片段时,它将调用web service并从服务器获取数据,其中包括日期和它们各自的事件,当我在日历中单击该日期时,它将显示指定日期的事件。我面临的问题是:
>
在这一行date=sdf.parse(dates);
上显示了一些错误,它说
java.lang.NullPointerException
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1009)
at java.text.DateFormat.parse(DateFormat.java:553)
at com.example.aksystems.practiceportal.Calendar.showJSON(Calendar.java:118)
在它成功运行之前的两天,问题是它会在日历日生成两次点。示例:我的服务器响应是
[{"d":"a","events":"2017\/04\/13 18:20:43"},{"d":"a","events":"2017\/04\/10 18:20:40"}]`
所以它会指向日期13一次,而日期10那么多次,为什么?
calendar.java
public class Calendar extends Fragment {
CalendarView calendarView;
private EditText editTextId;
private Button buttonGet;
private TextView textViewResult;
String dates,events;
private ProgressDialog loading;
CompactCalendarView compactCalendarView;
String id = "a";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = null;
public Calendar() {}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_layout_calendar, container, false);
compactCalendarView = (CompactCalendarView) view.findViewById(R.id.compactcalendar_view);
editTextId = (EditText) view.findViewById(R.id.editTextId);
buttonGet = (Button)view. findViewById(R.id.buttonGet);
textViewResult = (TextView) view.findViewById(R.id.textViewResult);
getData();
return view;
}
private void getData() {
loading = ProgressDialog.show(getActivity(),"Please wait...","Fetching...",false,false);
String url = Config.DATA_URL+"?e="+id;
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>()
{
@Override
public void onResponse(String response) {
loading.dismiss();
showJSON(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity(),error.getMessage().toString(),Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
requestQueue.add(stringRequest);
}
private void showJSON(String response)
{
for (int i=0;i < response.length();i++)
{
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY);
JSONObject collegeData = result.getJSONObject(i);
dates = collegeData.getString(Config.KEY_DATES);
events = collegeData.getString(Config.KEY_EVENTS);
//vc = collegeData.getString(Config.KEY_VC);*/
} catch (JSONException e) {
e.printStackTrace();
}
// textViewResult.setText(""+dates);
// String myDate = "2017/03/30 18:10:45";
try
{
date = sdf.parse(dates);
} catch (ParseException e) {
e.printStackTrace();
}
// Convert Date into milliseconds
assert date != null;
long millis = date.getTime();
Event ev1 = new Event(Color.RED, millis, events);
compactCalendarView.addEvent(ev1);
/* List<Event> events = compactCalendarView.getEvents(millis);
Toast.makeText(getActivity(), "" + events, Toast.LENGTH_SHORT).show();*/
compactCalendarView.setListener(new CompactCalendarView.CompactCalendarViewListener()
{
@Override
public void onDayClick(Date dateClicked) {
List<Event> events = compactCalendarView.getEvents(dateClicked);
// Log.d(TAG, "Day was clicked: " + dateClicked + " with events " + events);
Toast.makeText(getActivity(), "" + events, Toast.LENGTH_SHORT).show();
}
@Override
public void onMonthScroll(Date firstDayOfNewMonth)
{
// Log.d(TAG, "Month was scrolled to: " + firstDayOfNewMonth);
// Toast.makeText(getActivity(), "Month was scrolled to: " + firstDayOfNewMonth, Toast.LENGTH_SHORT).show();
}
});
}
}
}
response.length()
返回两个以上的值,因此它将指向上次日期中的多个事件。尝试使用jsonArray.size()
查找响应的长度。我正在寻找在特定日期添加事件的日历视图,如下所示: 默认的日历视图可以帮助我做同样的事情,或者有任何其他的API可以帮助获得像上面这样的结果吗? 让我知道! 谢谢
问题内容: 我正在编写一个需要向Android日历中添加一些事件的应用程序。对于插入,我只使用了以下代码: 现在,我想知道是否有可能获得与该事件关联的ID,以这种方式在插入事件并将其ID保存到我的应用程序后,用户可以直接从应用程序内部调用该事件。可能吗? 问题答案: 我提取了用于将事件存储到android日历中的列的列表。这里的清单: [0]“ originalEvent”(id = 830007
我想有一个月历视图显示所有的日子和事件在每一天。我找到了CalendarView,但它并不真正按我想要的方式显示事件。我一直在研究和检查大量的结果,直到我遇到了一个完整的应用程序,这就是SimpleMobileTools's Simple-Calendar。如果您还不明白我要找的是什么,下面是它们在月度视图日历上显示事件的方式: 不过,他们的应用程序有太多的功能,再加上它是一个完整的应用程序。我想
问题内容: 当我以编程方式创建一个始终记为生日日历(类型)的日历事件时,我遇到了一个奇怪的问题,我不知道为什么会这样记录日历事件。 我使用的代码如下:Xamarin C# 请问有人有什么提示或想法可以指引我正确的方向吗? 提前致谢。 问题答案: 下面回答的问题是旧的,请参考Pkosta的答案,它提供了更准确的答案… 您必须将CalendarId值设置为3,而不是默认的生日日历1。例如 更改为 它为
我想显示一个日历,其中包含在日期上使用不同颜色的事件,类似于默认日历应用程序。但是我在默认日历视图中没有看到任何这样的API。 有人能告诉我正确的方向吗?如何进行?我应该扩展默认日历并添加自己的功能吗?或者我应该使用带有PageViewer和片段的5x5文本框吗?
问题内容: 我已经看到很多在类中使用Threads的Python脚本,其中许多使用。例如: 在循环中,为什么不设置条件就检查条件? 问题答案: 因为其他人会设置它。 通常,您在应用程序的一部分中启动一个线程,然后继续执行您所做的任何事情: 当您执行操作时,线程会执行操作。如果要终止线程,则只需调用: 并且线程将停止。 因此,答案是:在这种情况下,事件不用于从线程对象本身内部控制线程。它用于从外