android - Location network service -
i developing app display details on network provider, got errors can me clear it?
logcat-file:
d/androidruntime(308): shutting down vmw/dalvikvm(308):threadid=1: thread exiting uncaughtexception(group=0x4001d800) e/androidruntime(308): fatal exception: main e/androidruntime(308): java.lang.runtimeexception: unable instantiate activity componentinfo{com.locationtest/com.locationtest.locationtestactivity}: java.lang.nullpointerexception e/androidruntime(308):at android.app.activitythread.performlaunchactivity(activitythread.java:2585) e/androidruntime(308):at android.app.activitythread.handlelaunchactivity(activitythread.java:2679) e/androidruntime(308):at android.app.activitythread.access$2300(activitythread.java:125) e/androidruntime(308):at android.app.activitythread$h.handlemessage(activitythread.java:2033) e/androidruntime(308):at android.os.handler.dispatchmessage(handler.java:99) e/androidruntime(308):at android.os.looper.loop(looper.java:123) e/androidruntime(308)at android.app.activitythread.main(activitythread.java:4627) e/androidruntime(308):at java.lang.reflect.method.invokenative(native method) e/androidruntime(308):at java.lang.reflect.method.invoke(method.java:521) e/androidruntime(308):at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:868) e/androidruntime(308):at com.android.internal.os.zygoteinit.main(zygoteinit.java:626) e/androidruntime(308):at dalvik.system.nativestart.main(native method) e/androidruntime(308): caused by: java.lang.nullpointerexception e/androidruntime(308):at android.app.activity.findviewbyid(activity.java:1637) e/androidruntime(308):at com.locationtest.locationtestactivity. <init>(locationtestactivity.java:18) e/androidruntime(308):at java.lang.class.newinstanceimpl(native method) e/androidruntime(308):at java.lang.class.newinstance(class.java:1429) e/androidruntime(308):at android.app.instrumentation.newactivity(instrumentation.java:1021) e/androidruntime(308):at android.app.activitythread.performlaunchactivity(activitythread.java:2577) e/androidruntime(308): ... 11 more i/process(308): sending signal. pid: 308 sig: 9 code:
public class locationtestactivity extends activity implements locationlistener { /** called when activity first created. */ locationmanager locman; string best; location loc; textview t=(textview)findviewbyid(r.id.text); private static final string[] = { "invalid" , "n/a" , "fine" , "coarse" }; private static final string[] p = { "invalid" , "n/a" , "low" , "medium" , "high" }; private static final string[] s = { "out of service" , "temporarily unavailable" , "available" }; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); locman =(locationmanager)getsystemservice(location_service); log("location providers"); dumpproviders(); criteria criteria=new criteria(); best=locman.getbestprovider(criteria,true); log("bestproviders"+best); log("starting last known location"); loc=locman.getlastknownlocation(best); dumplocation(loc); } protected void onresume() { super.onpause(); locman.requestlocationupdates(best, 15000,1,this); } protected void onpause() { super.onpause(); locman.removeupdates(this); } private void dumpproviders() { // todo auto-generated method stub list<string> providers=locman.getallproviders(); for(string provider:providers){ dumpprovider(provider); } } private void dumpprovider(string providers) { // todo auto-generated method stub locationprovider info=locman.getprovider(providers); stringbuilder buil=new stringbuilder(); buil.append("locationprovier[") .append("name=") .append(info.getname()) .append("provider state") .append(locman.isproviderenabled(providers)) .append(",getaccuracy=" ) .append(a[info.getaccuracy() + 1]) .append(",getpowerrequirement=" ) .append(p[info.getpowerrequirement() + 1]) .append(",hasmonetarycost=" ) .append(info.hasmonetarycost()) .append(",requirescell=" ) .append(info.requirescell()) .append(",requiresnetwork=" ) .append(info.requiresnetwork()) .append(",requiressatellite=" ) .append(info.requiressatellite()) .append(",supportsaltitude=" ) .append(info.supportsaltitude()) .append(",supportsbearing=" ) .append(info.supportsbearing()) .append(",supportsspeed=" ) .append(info.supportsspeed()) .append("]" ); log(buil.tostring()); } private void log(string string) { // todo auto-generated method stub t.append(string+"\n"); } @override public void onlocationchanged(location arg0) { // todo auto-generated method stub dumplocation(loc); } private void dumplocation(location loc) { // todo auto-generated method stub if (loc == null) log("\nlocation[unknown]" ); else log("\n" + loc.tostring()); } @override public void onproviderdisabled(string arg0) { // todo auto-generated method stub log("\nprovider disabled: " + arg0); } @override public void onproviderenabled(string arg0) { // todo auto-generated method stub log("\nprovider enabled: " + arg0); } @override public void onstatuschanged(string provider, int status, bundle extras) { // todo auto-generated method stub log("\nprovider status changed: " + provider + ", status=" + s[status] + ", extras=" + extras); }
you cannot have below line of code in class scope.
textview t=(textview)findviewbyid(r.id.text); findviewbyid method returns valid view object if particular view displayed on screen otherwise return null.
in case trying access textview before visible getting nullpointerexception (check second exception raised in log)
e/androidruntime(308): caused by: java.lang.nullpointerexception e/androidruntime(308):at android.app.activity.findviewbyid(activity.java:1637) e/androidruntime(308):at com.locationtest.locationtestactivity. (locationtestactivity.java:18) e/androidruntime(308):at java.lang.class.newinstanceimpl(native method) e/androidruntime(308):at java.lang.class.newinstance(class.java:1429) e/androidruntime(308):at android.app.instrumentation.newactivity(instrumentation.java:1021) e/androidruntime(308):at android.app.activitythread.performlaunchactivity(activitythread.java:2577) e/androidruntime(308): ... 11 more i/process(308): sending signal. pid: 308 sig: 9 add above line after "setcontentview(r.layout.main);" in oncreate() method should work, such as...
setcontentview(r.layout.main); t = (textview) findviewbyid(r.id.text); read error log required info debug.
Comments
Post a Comment