i making simple app count calories burned while exercising. however, crashes when try turn edittext int value. beginner @ java , android studio, please don't hesitate use detailed explanations. in advance.
import android.support.v7.widget.appcompattextview; import android.content.context; import android.net.uri; import android.os.bundle; import android.support.v4.app.fragment; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.edittext; import android.widget.relativelayout; import android.widget.spinner; import android.widget.textview; import android.widget.toast; public class firstfragment extends fragment implements adapterview.onitemselectedlistener{ // store instance variables private string title; private int page; edittext countcal; edittext weight; int cal; spinner spinner; // newinstance constructor creating fragment arguments public static firstfragment newinstance(int page, string title) { firstfragment fragmentfirst = new firstfragment(); bundle args = new bundle(); args.putint("someint", page); args.putstring("sometitle", title); fragmentfirst.setarguments(args); return fragmentfirst; } // store instance variables based on arguments passed @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); page = getarguments().getint("someint", 0); title = getarguments().getstring("sometitle"); } // inflate view fragment based on layout xml @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.fragment_first, container, false); countcal =(edittext)view.findviewbyid(r.id.edittext); weight = (edittext)view.findviewbyid(r.id.weight); spinner spinner = (spinner)view.findviewbyid(r.id.spinner); arrayadapter<?> adapter = arrayadapter.createfromresource(getactivity(), r.array.exercises, android.r.layout.simple_spinner_item); adapter.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item); spinner.setadapter(adapter); spinner.setonitemselectedlistener(this); return view; } @override public void onitemselected(adapterview<?> parent, view view, int i, long l) { if (countcal.gettext().tostring().trim().length() == 0) { if (weight.gettext().tostring().trim().length() == 0) { } } else { if (parent.getitematposition(i).tostring() == "jogging") { toast.maketext(parent.getcontext(), (int) (0.0175 * 7 * integer.parseint(weight.gettext().tostring()) * integer.parseint(weight.gettext().tostring())), toast.length_short).show(); } else if (parent.getitematposition(i).tostring() == "walking") { toast.maketext(parent.getcontext(), (int) (0.0175 * 3.5 * integer.parseint(weight.gettext().tostring()) * integer.parseint(weight.gettext().tostring())), toast.length_short).show(); } else if (parent.getitematposition(i).tostring() == "free weights") { toast.maketext(parent.getcontext(), (int) (0.0175 * 4.5 * integer.parseint(weight.gettext().tostring()) * integer.parseint(weight.gettext().tostring())), toast.length_short).show(); } toast.maketext(parent.getcontext(), "enter values!", toast.length_short).show(); } } @override public void onnothingselected(adapterview<?> adapterview) { } } }
here's error log
08-08 10:53:46.211 31221-31221/stefdude1999.fitness e/androidruntime: fatal exception: main process: stefdude1999.fitness, pid: 31221 java.lang.classcastexception: android.support.v7.widget.appcompattextview cannot cast android.widget.edittext @ stefdude1999.fitness.firstfragment.oncreateview(firstfragment.java:56) @ android.support.v4.app.fragment.performcreateview(fragment.java:2074) @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1104) @ android.support.v4.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1286) @ android.support.v4.app.backstackrecord.run(backstackrecord.java:758) @ android.support.v4.app.fragmentmanagerimpl.execsingleaction(fragmentmanager.java:1632) @ android.support.v4.app.backstackrecord.commitnowallowingstateloss(backstackrecord.java:637) @ android.support.v4.app.fragmentpageradapter.finishupdate(fragmentpageradapter.java:143) @ android.support.v4.view.viewpager.populate(viewpager.java:1237) @ android.support.v4.view.viewpager.populate(viewpager.java:1085) @ android.support.v4.view.viewpager.onmeasure(viewpager.java:1611) @ android.view.view.measure(view.java:18794) @ android.widget.relativelayout.measurechildhorizontal(relativelayout.java:715) @ android.widget.relativelayout.onmeasure(relativelayout.java:461) @ android.view.view.measure(view.java:18794) @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5951) @ android.widget.framelayout.onmeasure(framelayout.java:194) @ android.support.v7.widget.contentframelayout.onmeasure(contentframelayout.java:135) @ android.view.view.measure(view.java:18794) @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5951) @ android.support.v7.widget.actionbaroverlaylayout.onmeasure(actionbaroverlaylayout.java:391) @ android.view.view.measure(view.java:18794) @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5951) @ android.widget.framelayout.onmeasure(framelayout.java:194) @ android.view.view.measure(view.java:18794) @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5951) @ android.widget.linearlayout.measurechildbeforelayout(linearlayout.java:1465) @ android.widget.linearlayout.measurevertical(linearlayout.java:748) @ android.widget.linearlayout.onmeasure(linearlayout.java:630) @ android.view.view.measure(view.java:18794) @ android.view.viewgroup.measurechildwithmargins(viewgroup.java:5951) @ android.widget.framelayout.onmeasure(framelayout.java:194) @ com.android.internal.policy.phonewindow$decorview.onmeasure(phonewindow.java:2643) @ android.view.view.measure(view.java:18794) @ android.view.viewrootimpl.performmeasure(viewrootimpl.java:2100) @ android.view.viewrootimpl.measurehierarchy(viewrootimpl.java:1216) @ android.view.viewrootimpl.performtraversals(viewrootimpl.java:1452) @ android.view.viewrootimpl.dotraversal(viewrootimpl.java:1107) @ android.view.viewrootimpl$traversalrunnable.run(viewrootimpl.java:6013) @ android.view.choreographer$callbackrecord.run(choreographer.java:858) @ android.view.choreographer.docallbacks(choreographer.java:670) @ android.view.choreographer.doframe(choreographer.java:606) @ android.view.choreographer$framedisplayeventreceiver.run(choreographer.java:844) @ android.os.handler.handlecallback(handler.java:739) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:148) @ android.app.activitythread.main(activitythread.java:5417) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:726) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:616)
here xml layout
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="stefdude1999.fitness.firstfragment" android:id="@+id/content"> <!-- todo: update blank fragment layout --> <spinner android:id="@+id/spinner" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right|top" android:layout_alignparenttop="true" android:layout_alignparentright="true" android:layout_alignparentend="true" /> <edittext android:layout_width="113dp" android:layout_height="wrap_content" android:inputtype="number" android:ems="10" android:id="@+id/edittext" android:layout_gravity="left|top" android:layout_alignparenttop="true" android:layout_alignparentleft="true" android:layout_alignparentstart="true" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="enter minutes" android:id="@+id/textview" android:layout_gravity="left|top" android:layout_below="@+id/edittext" android:layout_alignparentleft="true" android:layout_alignparentstart="true" /> <edittext android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputtype="number" android:ems="10" android:id="@+id/edittext2" android:layout_below="@+id/textview" android:layout_alignparentleft="true" android:layout_alignparentstart="true" android:layout_alignright="@+id/edittext" android:layout_alignend="@+id/edittext" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="enter weight (kg)" android:id="@+id/weight" android:layout_below="@+id/edittext2" android:layout_alignparentleft="true" android:layout_alignparentstart="true" />
i'm not sure because haven't shown xml layouts, either countcal
or weight
not edittext
. 1 or both of them appcompattextview
. textview
supports older versions of android.
start importing android.widget.textview
try changing cast of them 1 @ time. try:
weight = (textview) view.findviewbyid(r.id.weight);
and if doesn't work, switch original , try:
countcal = (textview) view.findviewbyid(r.id.edittext);
if doesn't work, try casting both of them textview
.
if still doesn't work, try same method import android.support.v7.widget.appcompattextview
, cast them appcompattextview
. hope helps!
edit:
got it! in xml layout says widget r.id.weight
textview!
if cast weight textview
, keep other edittext
, should work!
weight = (textview) view.findviewbyid(r.id.weight);
Comments
Post a Comment