Android errors when getting battery info (in a Fragment) -
my app has several action bar tabs, 1 of fragments.it supposed display information battery. errors appear after navigating app bit.please explain caused problem , should done solve
here errors logcat :
05-15 07:24:30.809: e/androidruntime(25883): fatal exception: main 05-15 07:24:30.809: e/androidruntime(25883): java.lang.runtimeexception: error receiving broadcast intent { act=android.intent.action.battery_changed flg=0x60000010 (has extras) } in com.example.mytaskmanager.battery$1@4185ea78 05-15 07:24:30.809: e/androidruntime(25883): @ android.app.loadedapk$receiverdispatcher$args.run(loadedapk.java:755) 05-15 07:24:30.809: e/androidruntime(25883): @ android.os.handler.handlecallback(handler.java:605) 05-15 07:24:30.809: e/androidruntime(25883): @ android.os.handler.dispatchmessage(handler.java:92) 05-15 07:24:30.809: e/androidruntime(25883): @ android.os.looper.loop(looper.java:154) 05-15 07:24:30.809: e/androidruntime(25883): @ android.app.activitythread.main(activitythread.java:4624) 05-15 07:24:30.809: e/androidruntime(25883): @ java.lang.reflect.method.invokenative(native method) 05-15 07:24:30.809: e/androidruntime(25883): @ java.lang.reflect.method.invoke(method.java:511) 05-15 07:24:30.809: e/androidruntime(25883): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:809) 05-15 07:24:30.809: e/androidruntime(25883): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:576) 05-15 07:24:30.809: e/androidruntime(25883): @ dalvik.system.nativestart.main(native method) 05-15 07:24:30.809: e/androidruntime(25883): caused by: java.lang.nullpointerexception 05-15 07:24:30.809: e/androidruntime(25883): @ com.example.mytaskmanager.battery.setare(battery.java:77) 05-15 07:24:30.809: e/androidruntime(25883): @ com.example.mytaskmanager.battery$1.onreceive(battery.java:120) 05-15 07:24:30.809: e/androidruntime(25883): @ android.app.loadedapk$receiverdispatcher$args.run(loadedapk.java:746) 05-15 07:24:30.809: e/androidruntime(25883): ... 9 more and code :
public class battery extends fragment { private textview batteryinfo, memoryinfo, procent; int health = 0, level=0, plugged=0, scale=0, status=0, temperature=0, voltage=0; string technology = ""; boolean present = false; progressbar pb; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view myfragmentview = inflater.inflate(r.layout.layout, container, false); return myfragmentview; } @override public void onresume() { super.onresume(); procent=(textview)getactivity().findviewbyid(r.id.batteryproc); batteryinfo=(textview)getactivity().findviewbyid(r.id.textviewbatteryinfo); pb = (progressbar)getactivity().findviewbyid(r.id.progressbar); memoryinfo = (textview)getactivity().findviewbyid(r.id.memory); setare(); getmeminfo(); } public void setare(){ procent.settext("level: " + level + "%"); pb.setprogress(level); batteryinfo.settext( "health: "+health+"\n"+ "plugged: "+plugged+"\n"+ "present: "+present+"\n"+ "scale: "+scale+"\n"+ "status: "+status+"\n"+ "technology: "+technology+"\n"+ "temperature: "+temperature+"\n"+ "voltage: "+voltage+"\n"); } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); getactivity().registerreceiver(this.batteryinforeceiver, new intentfilter(intent.action_battery_changed)); } private broadcastreceiver batteryinforeceiver = new broadcastreceiver() { @override public void onreceive(context context, intent intent) { health= intent.getintextra(batterymanager.extra_health,0); level= intent.getintextra(batterymanager.extra_level,0); plugged= intent.getintextra(batterymanager.extra_plugged,0); present= intent.getextras().getboolean(batterymanager.extra_present); scale= intent.getintextra(batterymanager.extra_scale,0); status= intent.getintextra(batterymanager.extra_status,0); technology= intent.getextras().getstring(batterymanager.extra_technology); temperature= intent.getintextra(batterymanager.extra_temperature,0); voltage= intent.getintextra(batterymanager.extra_voltage,0); batteryinfo=(textview)getactivity().findviewbyid(r.id.textviewbatteryinfo); pb = (progressbar)getactivity().findviewbyid(r.id.progressbar); memoryinfo = (textview)getactivity().findviewbyid(r.id.memory); procent=(textview)getactivity().findviewbyid(r.id.batteryproc); setare(); getmeminfo(); } };
where procent, batteryinfo views in view hierarchy? if in r.layout.layout inflating in oncreateview, move findviewbyids oncreateview , use myfragmentview instead of getactivity(): ex: procent = (textview) myfragmentview.findviewbyid(r.id.batteryproc);
Comments
Post a Comment