google maps - android.view.InflateException: Binary XML file line #8: Error inflating class fragment -
i trying make google map activity find travel distance.but unfortunately layout.xml file throw , below error , stop app. used min sdk version - 16. tried lot of thing still error remain.i run app in real device.expect expert help.
2218/? e/androidruntime: fatal exception: main java.lang.runtimeexception: unable start activity componentinfo{scpp.globaleye.com.scppclient/scpp.globaleye.com.scppclient.ui.mapsactivity}: android.view.inflateexception: binary xml file line #8: error inflating class fragment @ android.app.activitythread.performlaunchactivity(activitythread.java:2184) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2211) @ android.app.activitythread.access$600(activitythread.java:149) @ android.app.activitythread$h.handlemessage(activitythread.java:1300) @ android.os.handler.dispatchmessage(handler.java:99) @ android.os.looper.loop(looper.java:153) @ android.app.activitythread.main(activitythread.java:4987) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:511) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:821) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:584) @ dalvik.system.nativestart.main(native method) caused by: android.view.inflateexception: binary xml file line #8: error inflating class fragment @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:704) @ android.view.layoutinflater.rinflate(layoutinflater.java:746) @ android.view.layoutinflater.inflate(layoutinflater.java:489) @ android.view.layoutinflater.inflate(layoutinflater.java:396) @ android.view.layoutinflater.inflate(layoutinflater.java:352) @ com.android.internal.policy.impl.phonewindow.setcontentview(phonewindow.java:258) @ android.app.activity.setcontentview(activity.java:1867) @ scpp.globaleye.com.scppclient.ui.mapsactivity.oncreate(mapsactivity.java:44) @ android.app.activity.performcreate(activity.java:5020) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1080) @ android.app.activitythread.performlaunchactivity(activitythread.java:2148) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2211) @ android.app.activitythread.access$600(activitythread.java:149) @ android.app.activitythread$h.handlemessage(activitythread.java:1300) @ android.os.handler.dispatchmessage(handler.java:99) @ android.os.looper.loop(looper.java:153) @ android.app.activitythread.main(activitythread.java:4987) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:511) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:821) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:584) @ dalvik.system.nativestart.main(native method) caused by: java.lang.nullpointerexception @ com.google.maps.api.android.lib6.gmm6.m.ad.a(unknown source) @ com.google.maps.api.android.lib6.gmm6.c.h.a(unknown source) @ com.google.maps.api.android.lib6.gmm6.c.y.a(unknown source) @ com.google.maps.api.android.lib6.e.bd.a(unknown source) @ com.google.maps.api.android.lib6.e.ev.a(unknown source) @ com.google.maps.api.android.lib6.e.z.a(unknown source) @ com.google.maps.api.android.lib6.e.y.a(unknown source) @ com.google.android.gms.maps.internal.u.ontransact(sourcefile:107) @ android.os.binder.transact(binder.java:326) @ com.google.android.gms.maps.internal.imapfragmentdelegate$zza$zza.oncreateview(unknown source) @ com.google.android.gms.maps.mapfragment$zza.oncreateview(unknown source) @ com.google.android.gms.dynamic.zza$4.zzb(unknown source) @ com.google.android.gms.dynamic.zza.zza(unknown source) @ com.google.android.gms.dynamic.zza.oncreateview(unknown source) @ com.google.android.gms.maps.mapfragment.oncreateview(unknown source) @ android.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:807) @ android.app.fragmentmanagerimpl.movetostate(fragmentmanager.java:1013) @ android.app.fragmentmanagerimpl.addfragment(fragmentmanager.java:1112) @ android.app.activity.oncreateview(activity.java:4676) @ android.support.v4.app.basefragmentactivityhoneycomb.oncreateview(basefragmentactivityhoneycomb.java:34) @ android.support.v4.app.fragmentactivity.oncreateview(fragmentactivity.java:79) @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:680) @ android.view.layoutinflater.rinflate(layoutinflater.java:746) @ android.view.layoutinflater.inflate(layoutinflater.java:489) @ android.view.layoutinflater.inflate(layoutinflater.java:396) @ android.view.layoutinflater.inflate(layoutinflater.java:352) @ com.android.internal.policy.impl.phonewindow.setcontentview(phonewindow.java:258) @ android.app.activity.setcontentview(activity.java:1867) @ scpp.globaleye.com.scppclient.ui.mapsactivity.oncreate(mapsactivity.java:44) @ android.app.activity.performcreate(activity.java:5020) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1080) @ android.app.activitythread.performlaunchactivity(activitythread.java:2148) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2211) @ android.app.activitythread.access$600(activitythread.java:149) @ android.app.activitythread$h.handlemessage(activitythread.java:1300) @ android.os.handler.dispatchmessage(handler.java:99) @ android.os.looper.loop(looper.java:153) @ android.app.activitythread.main(activitythread.java:4987) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:511) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:821) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:584) @ dalvik.system.nativestart.main(native method)
my mapsactivity class. comment other line , find setcontentview(r.layout.activity_maps);
pass error , stop app.
public class mapsactivity extends fragmentactivity implements locationlistener { googlemap googlemap; double start_lat,stop_lat,start_lng,stop_lng,lat,lng; criteria criteria; locationmanager locationmanager; string provider; location location; button start_btn,stop_btn; textview tv; float[] distance = new float[1]; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_maps); //mapfragment fm = (mapfragment) getfragmentmanager().findfragmentbyid(r.id.map); //system.out.println("on createteeeeeeeeeeeeeee"); //supportmapfragment fm = (supportmapfragment) getsupportfragmentmanager().findfragmentbyid(r.id.map); /*googlemap = fm.getmap(); getlocation(); //////button start_btn = (button) findviewbyid(r.id.button1); stop_btn = (button) findviewbyid(r.id.button2); stop_btn.setenabled(false); start_btn.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { // perform action on click //system.out.println("startttttttttttttttttttttttttbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); if(tv != null){ tv.settext(""); } stop_btn.setenabled(true); start_btn.setenabled(false); getstarrtloc(location); } }); stop_btn.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { // perform action on click //system.out.println("stoppppppppppppppppppppppppppbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"); start_btn.setenabled(true); stop_btn.setenabled(false); getstoptloc(location); } });*/ } @override public void onlocationchanged(location loc) { location = loc; //system.out.println("changggggggggggggggggggggggggg"+loc.getlatitude()+loc.getlongitude()); } @override public void onproviderdisabled(string provider) { // todo auto-generated method stub } @override public void onproviderenabled(string provider) { // todo auto-generated method stub } @override public void onstatuschanged(string provider, int status, bundle extras) { // todo auto-generated method stub } @override public boolean oncreateoptionsmenu(menu menu) { return true; } public location getlocation(){ if (activitycompat.checkselfpermission(this, manifest.permission.access_fine_location) != packagemanager.permission_granted && activitycompat.checkselfpermission(this, manifest.permission.access_coarse_location) != packagemanager.permission_granted) { //return; toast.maketext(this,"no permission", toast.length_long).show(); } // enabling mylocation layer of google map googlemap.setmylocationenabled(true); // getting locationmanager object system service location_service locationmanager = (locationmanager) getsystemservice(location_service); // creating criteria object retrieve provider criteria = new criteria(); // getting name of best provider provider = locationmanager.getbestprovider(criteria, true); // getting current location if (activitycompat.checkselfpermission(this, manifest.permission.access_fine_location) != packagemanager.permission_granted && activitycompat.checkselfpermission(this, manifest.permission.access_coarse_location) != packagemanager.permission_granted) { //return; toast.maketext(this,"no permission", toast.length_long).show(); } location = locationmanager.getlastknownlocation(provider); if(location!=null){ toast.maketext(this,"gps fixed", toast.length_long).show(); //onlocationchanged(location); //return location; lat=location.getlatitude(); lng=location.getlongitude(); } locationmanager.requestlocationupdates(provider,0,0, this); //system.out.println("llllllllllllllllllllllllllllllllllllll"+lat+lng); return location; } public void getstarrtloc(location start_loc){ start_lat = start_loc.getlatitude(); start_lng = start_loc.getlongitude(); //system.out.println("startttttttttttttttttttttttttttttttttt"+start_lat+"ffffffffff"+start_lng); } public void getstoptloc(location stop_loc){ stop_lat = stop_loc.getlatitude(); stop_lng = stop_loc.getlongitude(); //system.out.println("stppppppppppppppppppppppppppppppppppppp"+stop_lat+"ffffffffff"+stop_lng); calcdistance(); tv = (textview) findviewbyid(r.id.textview); tv.settext("distance :"+distance[0]); //system.out.println("dddddddddd"+distance[0]); } public void calcdistance(){ location.distancebetween(start_lat,start_lng,stop_lat,stop_lng,distance); } @override public void onbackpressed() { super.onbackpressed(); intent intent = new intent(mapsactivity.this, userselect.class); mapsactivity.this.startactivity(intent); mapsactivity.this.finish(); } }
my activity_map.xml file.
<?xml version="1.0" encoding="utf-8"?> <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=".ui.mapsactivity"> <fragment xmlns:map="http://schemas.android.com/apk/res-auto" android:name="com.google.android.gms.maps.mapfragment" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/layout1" tools:layout="@layout/activity_maps" /> <relativelayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="70dp" android:id="@+id/layout1" android:layout_alignparentleft="true" android:layout_alignparentstart="true" android:layout_alignparentbottom="true"> <button android:layout_width="145dp" android:layout_height="70dp" android:text="start ride" android:id="@+id/button1" android:layout_alignparentleft="true"/> <button android:layout_width="145dp" android:layout_height="70dp" android:text="stop ride" android:id="@+id/button2" android:layout_alignparentright="true"/> <textview android:layout_width="wrap_content" android:layout_height="70dp" android:text="" android:id="@+id/textview" android:layout_toleftof="@+id/button2" android:layout_torightof="@+id/button1" android:layout_tostartof="@id/button2" android:layout_toendof="@+id/button1" /> </relativelayout> </relativelayout>
my androidmainfest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="scpp.globaleye.com.scppclient"> <uses-sdk android:minsdkversion="16" /> <uses-permission android:name="com.google.android.providers.gsf.permission.read_gservices" /> <uses-permission android:name="android.permission.access_network_state" /> <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.camera" /> <!-- boot complete broadcast receiver --> <uses-permission android:name="android.permission.receive_boot_completed" /> <!-- external storage caching --> <uses-permission android:name="android.permission.write_external_storage" /> <!-- access_coarse/fine_location permissions not required use google maps android api v2, must specify either coarse or fine location permissions 'mylocation' functionality. --> <uses-permission android:name="android.permission.access_fine_location" /> <uses-permission android:name="android.permission.access_coarse_location" /> <application android:allowbackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsrtl="true" android:theme="@style/apptheme" > <!-- api key google maps-based apis defined string resource. (see file "res/values/google_maps_api.xml"). note api key linked encryption key used sign apk. need different api key each encryption key, including release key used sign apk publishing. can define keys debug , release targets in src/debug/ , src/release/. --> <meta-data android:name="com.google.android.geo.api_key" android:value="aizasybln7wet4t0n6gu6jr3awe6joqpqickmbe" /> <service android:name=".services.remotesenzservice" android:enabled="true" android:exported="true"></service> <activity android:name=".ui.login"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> <activity android:name=".ui.home" /> <activity android:name=".ui.services_view" /> <activity android:name=".ui.update_profile" /> <activity android:name=".ui.userselect" /> <activity android:name=".ui.wallet" /> <activity android:name=".ui.registration" /> <activity android:name=".ui.mapsactivity" android:label="@string/title_activity_maps"> </activity> </application> </manifest>
i think because using fragmentactivity, should use supportmapfragment , not mapfragment (because support api activity works fragment class of support library , not 1 of base framework). try changing line
android:name="com.google.android.gms.maps.mapfragment"
to this
android:name="com.google.android.gms.maps.supportmapfragment"
as side note, it's important note should use appcompatactivity instead of fragmentactivity.
Comments
Post a Comment