我正在尝试从日历中删除事件,因此我正在从数据库中获取事件 ID 并将它们发送到本地日历以删除它们,
当我尝试执行它们时,它向我显示错误,例如
日志猫
03-22 08:29:41.474 27018-27018/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myapplication, PID: 27018
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.Schedule_Delete}: java.lang.NumberFormatException: For input string: " "
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2984)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
Caused by: java.lang.NumberFormatException: For input string: " "
at java.lang.Long.parseLong(Long.java:432)
at java.lang.Long.parseLong(Long.java:485)
at com.example.myapplication.Schedule_Delete.Event_delete(Schedule_Delete.java:99)
at com.example.myapplication.Schedule_Delete.writeCalendarEvent(Schedule_Delete.java:76)
at com.example.myapplication.Schedule_Delete.onCreate(Schedule_Delete.java:36)
at android.app.Activity.performCreate(Activity.java:6956)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
安卓代码
private void writeCalendarEvent ()
{
String jsonString = getIntent().getStringExtra("rootJson");
String data = "";
try {
JSONObject jsonRootObject = new JSONObject(jsonString);
JSONArray jsonArray = jsonRootObject.getJSONArray("NEW_SCHEDULE");
Event_id = new String[jsonArray.length()];
for (L = 0; L < jsonArray.length(); L++) {
JSONObject jsonObject = jsonArray.getJSONObject(L);
Event_id[L] = jsonObject.getString("Event_id");
Event_delete(Event_id[L]);
}
} catch (JSONException e)
{
e.printStackTrace();
}
}
private void Event_delete(String s)
{
String id;
if(s.equals(""))
{
Toast.makeText(context, "id is empty"+s, Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(context, "id"+s, Toast.LENGTH_LONG).show();
id=s;
long eventID = Long.parseLong(id);
ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
Uri deleteUri = null;
deleteUri = ContentUris.withAppendedId(CalendarContract.Events.CONTENT_URI, eventID);
int rows = getContentResolver().delete(deleteUri, null, null);
Log.i("identifier", "Rows deleted: " + rows);
}
}
这是我的代码,我从数据库中获取事件 ID 并使用它们删除日历中的事件
在数据库中我没有"Event_id[L]"的值,所以我尝试将"私有无效Event_delete(字符串 s("放入并尝试执行该函数,但问题是它没有执行执行 if 部分执行 else 部分并向我显示此错误
Caused by: java.lang.NumberFormatException: For input string: " "
at java.lang.Long.parseLong(Long.java:432)
at java.lang.Long.parseLong(Long.java:485)
at com.example.myapplication.Schedule_Delete.Event_delete(Schedule_Delete.java:99)
at com.example.myapplication.Schedule_Delete.writeCalendarEvent(Schedule_Delete.java:76)
at com.example.myapplication.Schedule_Delete.onCreate(Schedule_Delete.java:36)
谁能帮我修复这个错误!
所以,parseLong 得到 null。我想这就是为什么它不能解析为Long的原因。也许问题是你应该添加if(s == null || s.trim((.equals("((以防止空引用。
使用trim
方法,它将删除多余的空格表单字符串。
id = id.trim();
并添加安全try
catch
。
try {
eventID = Long.parseLong(id);
} catch (ParseException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}