trying create app trying create simple converter. app crashes run emulator not sure why crashes. allows me run emulator
here see in logcat:
07-09 20:28:10.220 17354-17354/com.example.adrew.convertmidterm e/androidruntime﹕ fatal exception: main process: com.example.adrew.convertmidterm, pid: 17354 java.lang.runtimeexception: unable start activity componentinfo{com.example.adrew.convertmidterm/com.example.adrew.convertmidterm.mainactivity}: android.view.inflateexception: binary xml file line #1: error inflating class fragment @ android.app.activitythread.performlaunchactivity(activitythread.java:2325) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2390) @ android.app.activitythread.access$800(activitythread.java:151) @ android.app.activitythread$h.handlemessage(activitythread.java:1303) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:135) @ android.app.activitythread.main(activitythread.java:5257) @ java.lang.reflect.method.invoke(native method) @ java.lang.reflect.method.invoke(method.java:372) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:903) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:698) caused by: android.view.inflateexception: binary xml file line #1: error inflating class fragment @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:763) @ android.view.layoutinflater.inflate(layoutinflater.java:482) @ android.view.layoutinflater.inflate(layoutinflater.java:414) @ android.view.layoutinflater.inflate(layoutinflater.java:365) @ com.android.internal.policy.impl.phonewindow.setcontentview(phonewindow.java:378) @ android.app.activity.setcontentview(activity.java:2145) @ com.example.adrew.convertmidterm.mainactivity.oncreate(mainactivity.java:14) @ android.app.activity.performcreate(activity.java:5990) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1106) @ android.app.activitythread.performlaunchactivity(activitythread.java:2278) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2390) @ android.app.activitythread.access$800(activitythread.java:151) @ android.app.activitythread$h.handlemessage(activitythread.java:1303) at android.os.handler.dispatchmessage(handler.java:102) at android.os.looper.loop(looper.java:135) at android.app.activitythread.main(activitythread.java:5257) at java.lang.reflect.method.invoke(native method) at java.lang.reflect.method.invoke(method.java:372) at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:903) at com.android.internal.os.zygoteinit.main(zygoteinit.java:698) caused by: java.lang.nullpointerexception: attempt invoke virtual method 'android.view.view android.view.view.findviewbyid(int)' on null object reference @ com.example.adrew.convertmidterm.mainactivityfragment.oncreateview(mainactivityfragment.java:33) @ android.app.fragment.performcreateview(fragment.java:2053) @ android.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:870) @ android.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1045) @ android.app.fragmentmanagerimpl.addfragment(fragmentmanager.java:1147) @ android.app.fragmentmanagerimpl.oncreateview(fragmentmanager.java:2116) @ android.app.activity.oncreateview(activity.java:5328) @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:733) at android.view.layoutinflater.inflate(layoutinflater.java:482) at android.view.layoutinflater.inflate(layoutinflater.java:414) at android.view.layoutinflater.inflate(layoutinflater.java:365) at com.android.internal.policy.impl.phonewindow.setcontentview(phonewindow.java:378) at android.app.activity.setcontentview(activity.java:2145) at com.example.adrew.convertmidterm.mainactivity.oncreate(mainactivity.java:14) at android.app.activity.performcreate(activity.java:5990) at android.app.instrumentation.callactivityoncreate(instrumentation.java:1106) at android.app.activitythread.performlaunchactivity(activitythread.java:2278) at android.app.activitythread.handlelaunchactivity(activitythread.java:2390) at android.app.activitythread.access$800(activitythread.java:151) at android.app.activitythread$h.handlemessage(activitythread.java:1303) at android.os.handler.dispatchmessage(handler.java:102) at android.os.looper.loop(looper.java:135) at android.app.activitythread.main(activitythread.java:5257) at java.lang.reflect.method.invoke(native method) at java.lang.reflect.method.invoke(method.java:372) at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:903) at com.android.internal.os.zygoteinit.main(zygoteinit.java:698) 07-09 20:29:02.966 17354-17367/com.example.adrew.convertmidterm w/art﹕ suspending threads took: 7.769ms here code:
package com.example.adrew.convertmidterm; import android.app.fragment; import android.os.bundle; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.button; import android.widget.edittext; import android.view.view.onclicklistener; /** * placeholder fragment containing simple view. */ public class mainactivityfragment extends fragment { public mainactivityfragment() { } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { //return inflater.inflate(r.layout.fragment_main, container, false); view rootview = inflater.inflate(r.layout.fragment_main, container, false); //all test //original 3 without getview(). //final edittext editcentimeters = (edittext) findviewbyid(r.id.editcentimeters); final edittext editcentimeters = (edittext) getview().findviewbyid(r.id.editcentimeters); final edittext editinches = (edittext) getview().findviewbyid(r.id.editinches); button buttonconvert = (button) getview().findviewbyid(r.id.buttonconvert); //buttonconvert.setonclicklistener(new onclicklistener() { buttonconvert.setonclicklistener(new view.onclicklistener() { @override public void onclick(view arg0) { double centimeters = double.valueof( editcentimeters.gettext().tostring()); double inches = centimeters * 0.393700787 ; editinches.settext(string.valueof(inches)); } }); //end test return rootview; } } androidmanifest.xml:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.adrew.convertmidterm" > <application android:allowbackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name=".mainactivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> fragment_main.xml below:
<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" android:paddingleft="@dimen/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" android:paddingbottom="@dimen/activity_vertical_margin" tools:context=".mainactivityfragment"> <textview android:id="@+id/textcentimeters" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparenttop="true" android:layout_margintop="34dp" android:text="centimeters:" android:textappearance="?android:attr/textappearancemedium" /> <textview android:id="@+id/textinches" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/editcentimeters" android:layout_margintop="40dp" android:layout_toleftof="@+id/editcentimeters" android:text="inches:" android:textappearance="?android:attr/textappearancemedium" /> <edittext android:id="@+id/editinches" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbottom="@+id/textinches" android:layout_alignparentright="true" android:ems="10" android:inputtype="number" /> <edittext android:id="@+id/editcentimeters" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbottom="@+id/textcentimeters" android:layout_alignparentright="true" android:ems="10" android:inputtype="number" /> <button android:id="@+id/buttonconvert" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerhorizontal="true" android:layout_centervertical="true" android:text="convert" /> </relativelayout>
you can't use getview() reference, because view created in return rootview;.
return rootview; after call getview(). getting nullpointerexception because it's not created yet.
you need change
final edittext editcentimeters = (edittext) getview().findviewbyid(r.id.editcentimeters); final edittext editinches = (edittext) getview().findviewbyid(r.id.editinches); button buttonconvert = (button) getview().findviewbyid(r.id.buttonconvert); to
final edittext editcentimeters = (edittext) rootview.findviewbyid(r.id.editcentimeters); final edittext editinches = (edittext) rootview.findviewbyid(r.id.editinches); button buttonconvert = (button) rootview.findviewbyid(r.id.buttonconvert);
Comments
Post a Comment