android - How to resolve 'Null Pointer Exception' -
i'm new android. i'm creating application in have use map in 2 activities. application running when tap on 'tagyourself' activity (one of map activities) application crashes. log cat shows null pointer exception on line 46 this.setcontentview(r.layout.activity_tag_yourself);
. log cat showing. android.view.inflateexception
on binary xml file line # 17 fragment map.
i couldn't understand why giving such exceptions. please me. here log cat acitivity.
04-06 23:20:02.851: i/inputmethodmanager(31122): handlemessage: msg_set_active false, true 04-06 23:20:02.867: i/inputmethodmanager(31122): handlemessage: msg_unbind 985 04-06 23:20:02.911: d/openglrenderer(31122): flushing caches (mode 0) 04-06 23:20:03.276: d/openglrenderer(31122): flushing caches (mode 0) 04-06 23:20:08.341: v/phonewindow(31122): decorview setvisiblity: visibility = 0 04-06 23:20:08.386: v/inputmethodmanager(31122): onwindowfocus: null softinputmode=32 first=true flags=#1810100 04-06 23:20:08.386: v/inputmethodmanager(31122): start input: com.android.internal.policy.impl.phonewindow$decorview{41394140 v.e..... r.....id 0,0-480,854} ic=null tba=android.view.inputmethod.editorinfo@412aebc0 controlflags=#104 04-06 23:20:08.390: v/inputmethodmanager(31122): starting input: bind result=inputbindresult{com.android.internal.view.iinputmethodsession$stub$proxy@412635d8 com.android.inputmethod.latin/.latinime #989} 04-06 23:20:08.420: i/inputmethodmanager(31122): handlemessage: msg_set_active true, false 04-06 23:20:08.427: i/surfacetextureclient(31122): [stc::queuebuffer] (this:0x52cb22e8) fps:0.15, dur:6849.47, max:6849.47, min:6849.47 04-06 23:20:08.427: i/surfacetextureclient(31122): [stc::queuebuffer] this:0x52cb22e8, api:1, last queue time elapsed:6849.47 04-06 23:20:09.363: v/provider/settings(31122): invalidate [system]: current 182 != cached 0 04-06 23:20:09.367: d/activitythread(31122): installprovider: context=android.app.contextimpl@41393588holder=android.app.iactivitymanager$contentproviderholder@41271e08noisy=truenoreleaseneeded=truestable=true 04-06 23:20:09.368: v/provider/settings(31122): db cache, name = sound_effects_enabled , value = 0 04-06 23:20:09.393: d/mylog(31122): wifi state true 04-06 23:20:09.514: i/surfacetextureclient(31122): [stc::queuebuffer] (this:0x52cb22e8) fps:1.84, dur:1087.15, max:843.11, min:244.04 04-06 23:20:09.562: d/androidruntime(31122): shutting down vm 04-06 23:20:09.562: w/dalvikvm(31122): threadid=1: thread exiting uncaught exception (group=0x40cab9a8) 04-06 23:20:09.584: e/androidruntime(31122): fatal exception: main 04-06 23:20:09.584: e/androidruntime(31122): java.lang.runtimeexception: unable start activity componentinfo{com.example.jamaat_times/com.example.jamaattiming.tagyourself}: android.view.inflateexception: binary xml file line #17: error inflating class fragment 04-06 23:20:09.584: e/androidruntime(31122): @ android.app.activitythread.performlaunchactivity(activitythread.java:2343) 04-06 23:20:09.584: e/androidruntime(31122): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2395) 04-06 23:20:09.584: e/androidruntime(31122): @ android.app.activitythread.access$600(activitythread.java:162) 04-06 23:20:09.584: e/androidruntime(31122): @ android.app.activitythread$h.handlemessage(activitythread.java:1364) 04-06 23:20:09.584: e/androidruntime(31122): @ android.os.handler.dispatchmessage(handler.java:107) 04-06 23:20:09.584: e/androidruntime(31122): @ android.os.looper.loop(looper.java:194) 04-06 23:20:09.584: e/androidruntime(31122): @ android.app.activitythread.main(activitythread.java:5371) 04-06 23:20:09.584: e/androidruntime(31122): @ java.lang.reflect.method.invokenative(native method) 04-06 23:20:09.584: e/androidruntime(31122): @ java.lang.reflect.method.invoke(method.java:525) 04-06 23:20:09.584: e/androidruntime(31122): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:833) 04-06 23:20:09.584: e/androidruntime(31122): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:600) 04-06 23:20:09.584: e/androidruntime(31122): @ dalvik.system.nativestart.main(native method) 04-06 23:20:09.584: e/androidruntime(31122): caused by: android.view.inflateexception: binary xml file line #17: error inflating class fragment 04-06 23:20:09.584: e/androidruntime(31122): @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:704) 04-06 23:20:09.584: e/androidruntime(31122): @ android.view.layoutinflater.rinflate(layoutinflater.java:746) 04-06 23:20:09.584: e/androidruntime(31122): @ android.view.layoutinflater.inflate(layoutinflater.java:489) 04-06 23:20:09.584: e/androidruntime(31122): @ android.view.layoutinflater.inflate(layoutinflater.java:396) 04-06 23:20:09.584: e/androidruntime(31122): @ android.view.layoutinflater.inflate(layoutinflater.java:352) 04-06 23:20:09.584: e/androidruntime(31122): @ com.android.internal.policy.impl.phonewindow.setcontentview(phonewindow.java:281) 04-06 23:20:09.584: e/androidruntime(31122): @ android.app.activity.setcontentview(activity.java:1881) 04-06 23:20:09.584: e/androidruntime(31122): @ com.example.jamaattiming.tagyourself.oncreate(tagyourself.java:46) 04-06 23:20:09.584: e/androidruntime(31122): @ android.app.activity.performcreate(activity.java:5122) 04-06 23:20:09.584: e/androidruntime(31122): @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1081) 04-06 23:20:09.584: e/androidruntime(31122): @ android.app.activitythread.performlaunchactivity(activitythread.java:2307) 04-06 23:20:09.584: e/androidruntime(31122): ... 11 more 04-06 23:20:09.584: e/androidruntime(31122): caused by: java.lang.nullpointerexception: name == null 04-06 23:20:09.584: e/androidruntime(31122): @ java.lang.vmclassloader.findloadedclass(native method) 04-06 23:20:09.584: e/androidruntime(31122): @ java.lang.classloader.findloadedclass(classloader.java:354) 04-06 23:20:09.584: e/androidruntime(31122): @ java.lang.classloader.loadclass(classloader.java:491) 04-06 23:20:09.584: e/androidruntime(31122): @ java.lang.classloader.loadclass(classloader.java:461) 04-06 23:20:09.584: e/androidruntime(31122): @ android.support.v4.app.fragment.issupportfragmentclass(fragment.java:436) 04-06 23:20:09.584: e/androidruntime(31122): @ android.support.v4.app.fragmentactivity.oncreateview(fragmentactivity.java:255) 04-06 23:20:09.584: e/androidruntime(31122): @ android.view.layoutinflater.createviewfromtag(layoutinflater.java:676) 04-06 23:20:09.584: e/androidruntime(31122): ... 21 more
here xml code:
<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:orientation="vertical" android:background="#808080" tools:context=".tagyourself" android:id="@+id/activity_tag_yourself"> <textview android:id="@+id/tv_distance_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparenttop="true" android:text="@string/hello_world" /> <fragment android:id="@+id/map" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tv_distance_time" /> </relativelayout>
here java code tagyourself class:
public class tagyourself extends fragmentactivity { googlemap map; arraylist<latlng> markerpoints; textview tvdistanceduration; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); this.setcontentview(r.layout.activity_tag_yourself); this.tvdistanceduration = (textview) this.findviewbyid(r.id.tv_distance_time); // initializing this.markerpoints = new arraylist<latlng>(); supportmapfragment fm = (supportmapfragment) this.getsupportfragmentmanager().findfragmentbyid(r.id.map); // getting map supportmapfragment this.map = fm.getmap(); // enable mylocation button in map this.map.setmylocationenabled(true); // setting onclick event listener map this.map.setonmapclicklistener(new onmapclicklistener() { @override public void onmapclick(latlng point) { // 2 locations if (tagyourself.this.markerpoints.size() > 1) { tagyourself.this.markerpoints.clear(); tagyourself.this.map.clear(); } // adding new item arraylist tagyourself.this.markerpoints.add(point); // creating markeroptions markeroptions options = new markeroptions(); // setting position of marker options.position(point); /** * start location, color of marker green , * end location, color of marker red. */ if (tagyourself.this.markerpoints.size() == 1) { options.icon(bitmapdescriptorfactory.defaultmarker(bitmapdescriptorfactory.hue_green)); } else if (tagyourself.this.markerpoints.size() == 2) { options.icon(bitmapdescriptorfactory.defaultmarker(bitmapdescriptorfactory.hue_red)); } // add new marker google map android api v2 tagyourself.this.map.addmarker(options); // checks, whether start , end locations captured if (tagyourself.this.markerpoints.size() >= 2) { latlng origin = tagyourself.this.markerpoints.get(0); latlng dest = tagyourself.this.markerpoints.get(1); // getting url google directions api string url = tagyourself.this.getdirectionsurl(origin, dest); downloadtask downloadtask = new downloadtask(); // start downloading json data google directions api downloadtask.execute(url); } } }); } private string getdirectionsurl(latlng origin, latlng dest) { // origin of route string str_origin = "origin=" + origin.latitude + "," + origin.longitude; // destination of route string str_dest = "destination=" + dest.latitude + "," + dest.longitude; // sensor enabled string sensor = "sensor=false"; // building parameters web service string parameters = str_origin + "&" + str_dest + "&" + sensor; // output format string output = "json"; // building url web service string url = "https://maps.googleapis.com/maps/api/directions/" + output + "?" + parameters; return url; } /** method download json data url */ private string downloadurl(string strurl) throws ioexception { string data = ""; inputstream istream = null; httpurlconnection urlconnection = null; try { url url = new url(strurl); // creating http connection communicate url urlconnection = (httpurlconnection) url.openconnection(); // connecting url urlconnection.connect(); // reading data url istream = urlconnection.getinputstream(); bufferedreader br = new bufferedreader(new inputstreamreader(istream)); stringbuffer sb = new stringbuffer(); string line = ""; while ((line = br.readline()) != null) { sb.append(line); } data = sb.tostring(); br.close(); } catch (exception e) { log.d("exception while downloading url", e.tostring()); } { istream.close(); urlconnection.disconnect(); } return data; }
i've uses following permissions:
<uses-sdk android:minsdkversion="11" android:targetsdkversion="16" /> <uses-permission android:name="com.example.jamaat_times.permission.maps_receive" /> <uses-permission android:name="android.permission.change_wifi_state" /> <uses-permission android:name="android.permission.access_wifi_state" /> <uses-permission android:name="android.permission.access_network_state" /> <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="com.google.android.providers.gsf.permission.read_gservices" /> <uses-permission android:name="android.permission.access_coarse_location" /> <uses-permission android:name="android.permission.access_fine_location" /> <uses-permission android:name="android.permission.write_external_storage"/>
p.s: there no problem in key.
caused by: java.lang.nullpointerexception: name == null
you missing android:name
attribute fragment
<fragment android:id="@+id/map" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tv_distance_time" android:name="com.google.android.gms.maps.supportmapfragment"/>
Comments
Post a Comment