my app getting crash when try set time more current time. please solve problem. current time working fine app crashing when select time more current time. thanks
javafile:
package com.example.akshay.eventmanager; import android.app.activity; import android.app.datepickerdialog; import android.app.timepickerdialog; import android.content.intent; import android.hardware.input.inputmanager; import android.os.bundle; import android.text.inputtype; import android.util.log; import android.view.view; import android.widget.button; import android.widget.datepicker; import android.widget.edittext; import android.widget.textview; import android.widget.timepicker; import android.app.timepickerdialog.ontimesetlistener; import android.widget.toast; import com.google.android.gms.common.googleplayservicesnotavailableexception; import com.google.android.gms.common.googleplayservicesrepairableexception; import com.google.android.gms.location.places.place; import com.google.android.gms.location.places.ui.placepicker; import com.google.android.gms.maps.model.latlng; import java.text.simpledateformat; import java.util.calendar; import java.util.locale; import java.util.timezone; import android.app.datepickerdialog.ondatesetlistener; /** * created akshay on 7/12/2015. */ public class create extends activity implements view.onclicklistener { button select, create; edittext title, desc, time; textview venueinfo; placepicker.intentbuilder intentbuilder; private static final int place_picker_request = 1; public latlng gotlatlng; string placename; string plname; string addr; double gotlat, gotlong; string lat, long; databasehelper mydb; public static final string log_tag = "create"; string gottime = " "; string gotdate = " "; datepickerdialog datepicker; timepickerdialog mytimepicker; simpledateformat dateformatter; simpledateformat timeformatter; static boolean flag = false; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.create); dateformatter = new simpledateformat("eeee dd" ,locale.us); showdate(); showtime(); casting(); } public void casting() { select = (button) findviewbyid(r.id.bselect); create = (button) findviewbyid(r.id.bcreate); title = (edittext) findviewbyid(r.id.ettitle); desc = (edittext) findviewbyid(r.id.etdescription); time = (edittext) findviewbyid(r.id.ettime); venueinfo = (textview) findviewbyid(r.id.tvvenue); time.setinputtype(inputtype.type_null); select.setonclicklistener(this); create.setonclicklistener(this); time.setonclicklistener(this); } @override public void onclick(view v) { switch (v.getid()) { case r.id.bselect: try { intentbuilder = new placepicker.intentbuilder(); intent intent = intentbuilder.build(create.this); startactivityforresult(intent, place_picker_request); } catch (googleplayservicesrepairableexception e) { e.printstacktrace(); } catch (googleplayservicesnotavailableexception e) { toast.maketext(create.this, "google play services not available.", toast.length_long) .show(); } break; case r.id.bcreate: string title = title.gettext().tostring(); string desc = desc.gettext().tostring(); string eventtime = time.gettext().tostring(); string place = venueinfo.gettext().tostring(); mydb = new databasehelper(this); log.e(log_tag, title); log.e(log_tag, desc); log.e(log_tag, place); log.e(log_tag, lat); log.e(log_tag, long); log.e(log_tag, addr); log.e(log_tag, eventtime); int flag = mydb.insertvalues(title, desc, place, lat, long, addr, eventtime); if (flag == 1) { toast.maketext(create.this, "sucess", toast.length_long).show(); } else { toast.maketext(create.this, "error adding records", toast.length_long).show(); } break; case r.id.ettime: mytimepicker.show(); datepicker.show(); break; } } protected void onactivityresult(int requestcode, int resultcode, intent data) { if (requestcode == place_picker_request) { if (resultcode == result_ok) { place place = placepicker.getplace(data, this); gotlatlng = place.getlatlng(); plname = (string) place.getname(); addr = (string) place.getaddress(); gotlat = gotlatlng.latitude; gotlong = gotlatlng.longitude; lat = string.valueof(gotlat); long = string.valueof(gotlong); placename = string.format("place: %s", place.getname()); toast.maketext(this, placename, toast.length_long).show(); venueinfo.settext(plname); } } } public void showdate() { calendar cal = calendar.getinstance(); datepicker = new datepickerdialog(this, new ondatesetlistener() { public void ondateset(datepicker view, int year, int monthofyear, int dayofmonth ) { calendar newdate = calendar.getinstance(); newdate.set(year, monthofyear, dayofmonth); gotdate = dateformatter.format(newdate.gettime()).tostring(); } }, cal.get(calendar.year), cal.get(calendar.month), cal.get(calendar.day_of_week)); flag =true; } public void showtime() { if(flag == true) { calendar calender = calendar.getinstance(); mytimepicker = new timepickerdialog(this, new ontimesetlistener() { public void ontimeset(timepicker view, int hourofday, int minute) { calendar newtime = calendar.getinstance(); newtime.set(hourofday, minute); gottime = gotdate + " @ " + string.valueof(hourofday) + " :" + string.valueof(minute + 1); time.settext(gottime); } }, calender.get((calendar.hour_of_day)), calender.get(calendar.minute), true); } } } logcat:
07-13 16:43:10.468 478-478/com.example.akshay.eventmanager e/zygote﹕ mountemulatedstorage() 07-13 16:43:10.468 478-478/com.example.akshay.eventmanager e/zygote﹕ v2 07-13 16:43:10.468 478-478/com.example.akshay.eventmanager e/selinux﹕ [debug] get_category: variable seinfo: default sensitivity: null, cateogry: null 07-13 16:43:29.338 478-478/com.example.akshay.eventmanager e/viewrootimpl﹕ senduseractionevent() mview == null 07-13 16:43:31.088 478-478/com.example.akshay.eventmanager e/androidruntime﹕ fatal exception: main process: com.example.akshay.eventmanager, pid: 478 java.lang.arrayindexoutofboundsexception: length=17; index=17 @ java.util.calendar.set(calendar.java:1122) @ com.example.akshay.eventmanager.create$2.ontimeset(create.java:196) @ android.app.timepickerdialog.onclick(timepickerdialog.java:204) @ com.android.internal.app.alertcontroller$buttonhandler.handlemessage(alertcontroller.java:162) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:145) @ android.app.activitythread.main(activitythread.java:5972) @ java.lang.reflect.method.invoke(native method) @ java.lang.reflect.method.invoke(method.java:372) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1399) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:1194)
set time in calendar in showtime() method follows:
public void showtime() { if(flag == true) { calendar calender = calendar.getinstance(); mytimepicker = new timepickerdialog(this, new ontimesetlistener() { public void ontimeset(timepicker view, int hourofday, int minute) { calendar newtime = calendar.getinstance(); //newtime.set(hourofday, minute); // remove line //add these 2 line newtime.set(calendar.hour_of_day, hourofday); newtime.set(calendar.minute, minute); gottime = gotdate + " @ " + string.valueof(hourofday) + " :" + string.valueof(minute + 1); time.settext(gottime); } }, calender.get((calendar.hour_of_day)), calender.get(calendar.minute), true); } } edit: hourodday in am/pm can this:
string format = "hh:mm a"; // own format simpledateformat sdf = new simpledateformat(format, locale.us); string formated_time = sdf.format(newtime.gettime()); //formated_time show time "hh:mm am/pm".
Comments
Post a Comment