android - Why does my app still crash after the emulator runs? -


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