java - Android Activity Force Closing in Android 4.1 -
this main activity's source, have tried start in android 2.3.7 , android 4.1 , above, runs successfuly in android 2.3.7 crashes in android 4.1.
public class calculatoractivity extends activity implements locationlistener { protected static final string tag = "123"; public static handler h; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_calculator); (locationmanager)getsystemservice(context.location_service); final sharedpreferences unitpreference = preferencemanager.getdefaultsharedpreferences(this); final string unitstring = unitpreference.getstring("unit_type", ""); final int unit = integer.parseint(unitstring); changecityname(); changeusername(); if (unit==1) { textview kms1 = (textview) findviewbyid(r.id.textview7); kms1.settext("kms."); textview kml = (textview) findviewbyid(r.id.textview8); kml.settext("km/lt"); textview kms2 = (textview) findviewbyid(r.id.textview9); kms2.settext("kms."); textview rs = (textview) findviewbyid(r.id.textview10); rs.settext("rs."); } else { textview kms1 = (textview) findviewbyid(r.id.textview7); kms1.settext("mi."); textview kml = (textview) findviewbyid(r.id.textview8); kml.settext("mi/ga"); textview kms2 = (textview) findviewbyid(r.id.textview9); kms2.settext("mi."); textview rs = (textview) findviewbyid(r.id.textview10); rs.settext("$"); } clickbutton(); }; private void changeusername() { final sharedpreferences currentusername = getsharedpreferences("prefs_name",0); final string loggedinuser = currentusername.getstring("username", ""); textview loggedinusername = (textview) findviewbyid(r.id.textview11); loggedinusername.settext("logged in "+loggedinuser); } private void changecityname() { final sharedpreferences citypreference = preferencemanager.getdefaultsharedpreferences(this); final string citystring = citypreference.getstring("example_list", ""); int city = integer.parseint(citystring); textview cityname = (textview) findviewbyid(r.id.textview12); if (city==1) { cityname.settext("panchkula "); } else if (city==2) { cityname.settext("chandigarh "); } else if (city==3) { cityname.settext("mohali "); } else { cityname.settext("your city "); } } @override public void onresume() { super.onresume(); final sharedpreferences unitpreference = preferencemanager.getdefaultsharedpreferences(this); final string unitstring = unitpreference.getstring("unit_type", ""); final int unit = integer.parseint(unitstring); final sharedpreferences citypreference = preferencemanager.getdefaultsharedpreferences(this); final string citystring = citypreference.getstring("example_list", ""); int city = integer.parseint(citystring); final sharedpreferences fuelpreference = preferencemanager.getdefaultsharedpreferences(this); final string fuelstring = fuelpreference.getstring("fuel_type", ""); int fuel = integer.parseint(fuelstring); if (unit==1) { textview kms1 = (textview) findviewbyid(r.id.textview7); kms1.settext("kms."); textview kml = (textview) findviewbyid(r.id.textview8); kml.settext("km/lt"); textview kms2 = (textview) findviewbyid(r.id.textview9); kms2.settext("kms."); textview rs = (textview) findviewbyid(r.id.textview10); rs.settext("rs."); } else { textview kms1 = (textview) findviewbyid(r.id.textview7); kms1.settext("mi."); textview kml = (textview) findviewbyid(r.id.textview8); kml.settext("mi/ga"); textview kms2 = (textview) findviewbyid(r.id.textview9); kms2.settext("mi."); textview rs = (textview) findviewbyid(r.id.textview10); rs.settext("$"); } clickbutton(); changecityname(); changeusername(); h = new handler() { public void handlemessage(message msg) { super.handlemessage(msg); switch (msg.what) { case 0: finish(); break; } } }; } @override protected void onpause() { super.onpause(); final sharedpreferences unitpreference = getsharedpreferences("unit_type",mode_private); sharedpreferences.editor uniteditor = unitpreference.edit(); uniteditor.commit(); } public void clickbutton() { final sharedpreferences unitpreference = preferencemanager.getdefaultsharedpreferences(this); final string unitstring = unitpreference.getstring("unit_type", ""); final int unit = integer.parseint(unitstring); final sharedpreferences citypreference = preferencemanager.getdefaultsharedpreferences(this); final string citystring = citypreference.getstring("example_list", ""); int city = integer.parseint(citystring); final sharedpreferences fuelpreference = preferencemanager.getdefaultsharedpreferences(this); final string fuelstring = fuelpreference.getstring("fuel_type", ""); int fuel = integer.parseint(fuelstring); sharedpreferences petrolpricesetting = getsharedpreferences("prefs_name", 0); sharedpreferences dieselpricesetting = getsharedpreferences("prefs_name", 0); float citypetrolprice =petrolpricesetting.getfloat("petrolprice", 70.0f); float citydieselprice =dieselpricesetting.getfloat("dieselprice", 60.0f); final double price; if (fuel==1) { if (city==1) { price=69.19; } else if (city==2) { price=69.59; } else if (city==3) { price=76.18; } else { price=citypetrolprice; } } else { if (city==1) { price=47.24; } else if (city==2) { price=49.42; } else if (city==3) { price=47.56; } else { price=citydieselprice; } } button livecost = (button) findviewbyid(r.id.button3); livecost.setonclicklistener(new onclicklistener() { @override public void onclick(view arg0) { intent startlive = new intent(calculatoractivity.this,live.class); calculatoractivity.this.startactivity(startlive); } }); button calculatemileage = (button) findviewbyid(r.id.button1); calculatemileage.setonclicklistener(new onclicklistener() { @override public void onclick(view arg0) { edittext distancetravelled= (edittext) findviewbyid(r.id.edittext1); edittext refillingcost= (edittext) findviewbyid(r.id.edittext2); if (distancetravelled.length()==0 || refillingcost.length()==0 ) { log.v(tag, "setting has been changed!"); toast.maketext(getapplicationcontext(), "please fill both distance travelled , cost!", toast.length_short).show(); } else { string stringdistancetravelled=distancetravelled.gettext().tostring(); string stringrefillingcost=refillingcost.gettext().tostring(); log.v(tag, "setting has been changed!"); float floatdistancetravelled =float.valueof(stringdistancetravelled); float floatrefillingcost =float.valueof(stringrefillingcost); double mileageanswer = (floatdistancetravelled/floatrefillingcost)*price; final float floatmileageanswer = (float) mileageanswer; double mileageanswerroundoff = math.round(floatmileageanswer*100.0)/100.0; double mileageanswerimperial = mileageanswer*0.621371192; final float floatmileageanswerimperial = (float) mileageanswerimperial; double mileageanswerimperialroundoff = math.round(floatmileageanswerimperial*100.0)/100.0; if (unit==1) { toast.maketext(getapplicationcontext(), mileageanswerroundoff+" km/l", toast.length_long).show(); } else { toast.maketext(getapplicationcontext(), mileageanswerimperialroundoff+" mi/ga", toast.length_long).show(); } } }}); button calculatecost= (button) findviewbyid(r.id.button2); calculatecost.setonclicklistener(new onclicklistener() { @override public void onclick(view arg0) { edittext mileage= (edittext) findviewbyid(r.id.edittext3); edittext distance= (edittext) findviewbyid(r.id.edittext4); if (mileage.gettext().length()==0 || distance.gettext().length()==0 ) { toast.maketext(getapplicationcontext(), "please fill both distance travel , mileage!", toast.length_short).show(); } else { string stringmileage=mileage.gettext().tostring(); string stringdistance=distance.gettext().tostring(); float floatmileage =float.valueof(stringmileage); float floatdistance =float.valueof(stringdistance); double costanswer = (floatdistance)*(price/floatmileage); final float floatcostanswer = (float) costanswer; double costanswerroundoff = math.round(floatcostanswer*100.0)/100.0; double costanswerimperial = costanswer*0.621371192*0.01661; final float floatcostanswerimperial = (float) costanswerimperial; double costanswerimperialroundoff = math.round(floatcostanswerimperial*100.0)/100.0; if (unit==1) { toast.maketext(getapplicationcontext(), "rs."+costanswerroundoff, toast.length_long).show(); } else { toast.maketext(getapplicationcontext(), "$"+costanswerimperialroundoff, toast.length_long).show(); } } }}); } @override public boolean oncreateoptionsmenu(menu menu) { getmenuinflater().inflate(r.menu.activity_calculator, menu); return true; } public boolean onmenuitemselected(int featureid, menuitem item) { if (item.getitemid()==r.id.menu_settings) { intent startsettings = new intent(calculatoractivity.this,settingsactivity.class); calculatoractivity.this.startactivity(startsettings); } else { intent startlogin = new intent(calculatoractivity.this,login.class); calculatoractivity.this.startactivity(startlogin); checkbox keeplog = (checkbox) findviewbyid(r.id.checkbox1); boolean ischecked = false; sharedpreferences settings = getsharedpreferences("prefs_name", 0); sharedpreferences.editor editor = settings.edit(); editor.putboolean("ischecked", ischecked); editor.commit(); finish(); } return true; } @override public void onlocationchanged(location location) { } @override public void onproviderdisabled(string arg0) { } @override public void onproviderenabled(string arg0) { } @override public void onstatuschanged(string arg0, int arg1, bundle arg2) { } } layout file:
<textview android:id="@+id/textview2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_below="@+id/textview1" android:layout_marginleft="24dp" android:layout_margintop="32dp" android:text="distance: " android:textappearance="?android:attr/textappearancemedium" android:textcolor="@android:color/white" /> <textview android:id="@+id/textview3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/textview2" android:layout_below="@+id/textview2" android:layout_margintop="39dp" android:text="cost:" android:textappearance="?android:attr/textappearancemedium" android:textcolor="@android:color/white" /> <edittext android:id="@+id/edittext2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@+id/textview3" android:layout_alignbottom="@+id/textview3" android:layout_alignleft="@+id/edittext1" android:ems="10" android:inputtype="numberdecimal" android:width="50dp" /> <textview android:id="@+id/textview10" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbottom="@+id/edittext2" android:layout_toleftof="@+id/edittext2" android:text="rs." android:textappearance="?android:attr/textappearancesmall" android:textcolor="@android:color/white" /> <textview android:id="@+id/textview9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbottom="@+id/textview6" android:layout_torightof="@+id/edittext4" android:text="kms." android:textappearance="?android:attr/textappearancesmall" android:textcolor="@android:color/white" /> <edittext android:id="@+id/edittext1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignright="@+id/textview1" android:layout_aligntop="@+id/textview2" android:ems="10" android:height="10dp" android:inputtype="numberdecimal" android:maxheight="10dp" android:width="50dp" /> <textview android:id="@+id/textview7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@+id/edittext1" android:layout_alignbottom="@+id/edittext1" android:layout_torightof="@+id/edittext1" android:text="kms." android:textappearance="?android:attr/textappearancesmall" android:textcolor="@android:color/white" /> <edittext android:id="@+id/edittext3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@+id/textview5" android:layout_alignbottom="@+id/textview5" android:layout_torightof="@+id/textview10" android:ems="10" android:inputtype="numberdecimal" android:width="50dp" /> <textview android:id="@+id/textview4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignright="@+id/button1" android:layout_below="@+id/button1" android:layout_margintop="26dp" android:text="distance cost calculator" android:textappearance="?android:attr/textappearancelarge" android:textcolor="@android:color/white" android:textstyle="bold" /> <textview android:id="@+id/textview1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparenttop="true" android:layout_centerhorizontal="true" android:layout_margintop="36dp" android:text="mileage calculator" android:textappearance="?android:attr/textappearancelarge" android:textcolor="@android:color/white" android:textstyle="bold" /> <edittext android:id="@+id/edittext4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@+id/textview6" android:layout_alignbottom="@+id/textview6" android:layout_toleftof="@+id/textview7" android:ems="10" android:inputtype="numberdecimal" android:width="50dp" > <requestfocus /> </edittext> <textview android:id="@+id/textview6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/textview3" android:layout_below="@+id/textview4" android:layout_margintop="32dp" android:text="distance: " android:textappearance="?android:attr/textappearancemedium" android:textcolor="@android:color/white" /> <textview android:id="@+id/textview5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignleft="@+id/textview6" android:layout_below="@+id/edittext4" android:layout_margintop="34dp" android:text="mileage: " android:textappearance="?android:attr/textappearancemedium" android:textcolor="@android:color/white" /> <button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@+id/button2" android:layout_alignbottom="@+id/button2" android:layout_alignright="@+id/textview8" android:background="@drawable/btn_normal" android:paddingbottom="12dp" android:paddingleft="20dp" android:paddingright="20dp" android:paddingtop="12dp" android:text="live cost" android:textcolor="@android:color/white" /> <button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/edittext3" android:layout_margintop="18dp" android:layout_toleftof="@+id/button3" android:background="@drawable/btn_normal" android:paddingbottom="12dp" android:paddingleft="15dp" android:paddingright="15dp" android:paddingtop="12dp" android:text="calculate cost" android:textcolor="@android:color/white" /> <button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/edittext2" android:layout_centerhorizontal="true" android:layout_margintop="17dp" android:background="@drawable/btn_normal" android:paddingbottom="12dp" android:paddingleft="55dp" android:paddingright="55dp" android:paddingtop="12dp" android:text="calculate mileage" android:textcolor="@android:color/white" /> <textview android:id="@+id/textview8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@+id/edittext3" android:layout_alignbottom="@+id/edittext3" android:layout_alignleft="@+id/textview9" android:text="km/lt" android:textappearance="?android:attr/textappearancesmall" android:textcolor="@android:color/white" /> <textview android:id="@+id/textview11" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:layout_alignparentleft="true" android:paddingbottom="5dp" android:paddingleft="5dp" android:text="logged in as" /> <textview android:id="@+id/textview12" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:layout_alignparentright="true" android:paddingbottom="5dp" android:text="city" android:textappearance="?android:attr/textappearancesmall" /> manifest: changing theme in manifest has no effect, have tried themes run other successful activities!
log:
08-01 10:38:14.374: e/trace(14994): error opening trace file: no such file or directory (2) 08-01 10:38:14.390: v/activitythread(14994): com.basic.mileagecalculatorwithsettings white listed hwui 08-01 10:38:14.452: i/system.out(14994): sending wait chunk 08-01 10:38:14.452: w/activitythread(14994): application com.basic.mileagecalculatorwithsettings waiting debugger on port 8100... 08-01 10:38:14.499: i/dalvikvm(14994): debugger active 08-01 10:38:14.655: i/system.out(14994): debugger has connected 08-01 10:38:14.655: i/system.out(14994): waiting debugger settle... 08-01 10:38:14.858: i/system.out(14994): waiting debugger settle... 08-01 10:38:15.061: i/system.out(14994): waiting debugger settle... 08-01 10:38:15.257: i/system.out(14994): waiting debugger settle... 08-01 10:38:15.460: i/system.out(14994): waiting debugger settle... 08-01 10:38:15.663: i/system.out(14994): waiting debugger settle... 08-01 10:38:15.858: i/system.out(14994): waiting debugger settle... 08-01 10:38:16.061: i/system.out(14994): waiting debugger settle... 08-01 10:38:16.265: i/system.out(14994): waiting debugger settle... 08-01 10:38:16.460: i/system.out(14994): waiting debugger settle... 08-01 10:38:16.663: i/system.out(14994): debugger has settled (1366) 08-01 10:38:29.194: d/androidruntime(14994): shutting down vm 08-01 10:38:29.194: w/dalvikvm(14994): threadid=1: thread exiting uncaught exception (group=0x40aa0440) 08-01 10:38:29.257: e/androidruntime(14994): fatal exception: main 08-01 10:38:29.257: e/androidruntime(14994): java.lang.runtimeexception: unable start activity componentinfo{com.basic.mileagecalculatorwithsettings/com.basic.mileagecalculatorwithsettings.calculatoractivity}: java.lang.numberformatexception: invalid int: "" 08-01 10:38:29.257: e/androidruntime(14994): @ android.app.activitythread.performlaunchactivity(activitythread.java:2187) 08-01 10:38:29.257: e/androidruntime(14994): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2212) 08-01 10:38:29.257: e/androidruntime(14994): @ android.app.activitythread.access$600(activitythread.java:144) 08-01 10:38:29.257: e/androidruntime(14994): @ android.app.activitythread$h.handlemessage(activitythread.java:1210) 08-01 10:38:29.257: e/androidruntime(14994): @ android.os.handler.dispatchmessage(handler.java:99) 08-01 10:38:29.257: e/androidruntime(14994): @ android.os.looper.loop(looper.java:137) 08-01 10:38:29.257: e/androidruntime(14994): @ android.app.activitythread.main(activitythread.java:4966) 08-01 10:38:29.257: e/androidruntime(14994): @ java.lang.reflect.method.invokenative(native method) 08-01 10:38:29.257: e/androidruntime(14994): @ java.lang.reflect.method.invoke(method.java:511) 08-01 10:38:29.257: e/androidruntime(14994): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:791) 08-01 10:38:29.257: e/androidruntime(14994): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:558) 08-01 10:38:29.257: e/androidruntime(14994): @ dalvik.system.nativestart.main(native method) 08-01 10:38:29.257: e/androidruntime(14994): caused by: java.lang.numberformatexception: invalid int: "" 08-01 10:38:29.257: e/androidruntime(14994): @ java.lang.integer.invalidint(integer.java:138) 08-01 10:38:29.257: e/androidruntime(14994): @ java.lang.integer.parseint(integer.java:359) 08-01 10:38:29.257: e/androidruntime(14994): @ java.lang.integer.parseint(integer.java:332) 08-01 10:38:29.257: e/androidruntime(14994): @ com.basic.mileagecalculatorwithsettings.calculatoractivity.oncreate(calculatoractivity.java:55) 08-01 10:38:29.257: e/androidruntime(14994): @ android.app.activity.performcreate(activity.java:5008) 08-01 10:38:29.257: e/androidruntime(14994): @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1079) 08-01 10:38:29.257: e/androidruntime(14994): @ android.app.activitythread.performlaunchactivity(activitythread.java:2141) 08-01 10:38:29.257: e/androidruntime(14994): ... 11 more the error think invalid int: "". reason?
final string unitstring = unitpreference.getstring("unit_type", ""); final int unit = integer.parseint(unitstring); should fail on every android version!
try:
final string unitstring = unitpreference.getstring("unit_type", "0"); final int unit = integer.parseint(unitstring); note: better way achieve store "unit_type" int, not string
Comments
Post a Comment