android - Location manager NULL FC -
i have fragment uses location manager , failing error:
03-10 17:40:59.875 3909-3909/com.beerportfolio.beerportfoliopro e/androidruntime﹕ fatal exception: main java.lang.nullpointerexception @ com.beerportfolio.beerportfoliopro.findbrewery.<init>(findbrewery.java:25) @ java.lang.class.newinstanceimpl(native method) @ java.lang.class.newinstance(class.java:1130) @ android.support.v4.app.fragment.instantiate(fragment.java:402) @ android.support.v4.app.fragment.instantiate(fragment.java:377) @ com.beerportfolio.beerportfoliopro.maindrawer2.displaynavfragment(maindrawer2.java:172) @ com.beerportfolio.beerportfoliopro.maindrawer2.access$000(maindrawer2.java:28) @ com.beerportfolio.beerportfoliopro.maindrawer2$1.onitemclick(maindrawer2.java:71) @ android.widget.adapterview.performitemclick(adapterview.java:298) @ android.widget.abslistview.performitemclick(abslistview.java:1237) @ android.widget.listview.performitemclick(listview.java:4555) @ android.widget.abslistview$performclick.run(abslistview.java:3037) @ android.widget.abslistview$1.run(abslistview.java:3724) @ android.os.handler.handlecallback(handler.java:730) @ android.os.handler.dispatchmessage(handler.java:92) @ android.os.looper.loop(looper.java:158) @ android.app.activitythread.main(activitythread.java:5789) @ java.lang.reflect.method.invokenative(native method) @ java.lang.reflect.method.invoke(method.java:525) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1027) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:843) @ dalvik.system.nativestart.main(native method) findbrewery line 25 this:
locationmanager locationmanager =(locationmanager)getactivity().getsystemservice(context.location_service); the whole code findbrewery is:
public class findbrewery extends fragment implements locationlistener { private textview latitutefield; private textview longitudefield; locationmanager locationmanager =(locationmanager)getactivity().getsystemservice(context.location_service); private string provider; context c = getactivity().getapplicationcontext(); public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); } public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { //todo change view view rootview = inflater.inflate(r.layout.beer_location_list,container, false); // location manager // define criteria how select locatioin provider -> use // default criteria criteria = new criteria(); provider = locationmanager.getbestprovider(criteria, false); location location = locationmanager.getlastknownlocation(provider); // initialize location fields if (location != null) { system.out.println("provider " + provider + " has been selected."); onlocationchanged(location); } else { } return rootview; } /* request updates @ startup */ @override public void onresume() { super.onresume(); locationmanager.requestlocationupdates(provider, 400, 1, this); } /* remove locationlistener updates when activity paused */ @override public void onpause() { super.onpause(); locationmanager.removeupdates(this); } @override public void onlocationchanged(location location) { int lat = (int) (location.getlatitude()); int lng = (int) (location.getlongitude()); //latitutefield.settext(string.valueof(lat)); //longitudefield.settext(string.valueof(lng)); //toast.maketext(this, "finding loaction",toast.length_short).show(); //call asycn task location string url = "myurl"; log.d("urltest", url); //async task goes here new getnearbybreweries(this.getactivity()).execute(url); } @override public void onstatuschanged(string provider, int status, bundle extras) { // todo auto-generated method stub } @override public void onproviderenabled(string provider) { //toast.maketext(this, "enabled new provider " + provider,toast.length_short).show(); } @override public void onproviderdisabled(string provider) { //toast.maketext(this, "disabled provider " + provider,toast.length_short).show(); } }
getactivity() return null until fragment attached activity. should move code onattach():
@override public void onattach(activity activity) { super.onattach(activity); locationmanager =(locationmanager)activity.getsystemservice(context.location_service); }
Comments
Post a Comment