Java Null Pointer Exception in a File Reading Android Application -
i new android app development , developing android app read .txt file containing spectrum data. file contains integers , white spaces,so after reading every line code trims string remove white spaces , converts string containing string integers integers represents y coordinate value , line number represents x coordinate value. have plot scatter graph , using achartengine same. when seek running application on emulator app crashes. log cat gives information
06-22 09:08:58.114: e/androidruntime(1015): fatal exception: main 06-22 09:08:58.114: e/androidruntime(1015): java.lang.runtimeexception: unable start activity componentinfo{com.example.spec1readertest/com.example.spec1readertest.mainactivity}: java.lang.nullpointerexception 06-22 09:08:58.114: e/androidruntime(1015): @ android.app.activitythread.performlaunchactivity(activitythread.java:2211) 06-22 09:08:58.114: e/androidruntime(1015): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2261) 06-22 09:08:58.114: e/androidruntime(1015): @ android.app.activitythread.access$600(activitythread.java:141) 06-22 09:08:58.114: e/androidruntime(1015): @ android.app.activitythread$h.handlemessage(activitythread.java:1256) 06-22 09:08:58.114: e/androidruntime(1015): @ android.os.handler.dispatchmessage(handler.java:99) 06-22 09:08:58.114: e/androidruntime(1015): @ android.os.looper.loop(looper.java:137) 06-22 09:08:58.114: e/androidruntime(1015): @ android.app.activitythread.main(activitythread.java:5103) 06-22 09:08:58.114: e/androidruntime(1015): @ java.lang.reflect.method.invokenative(native method) 06-22 09:08:58.114: e/androidruntime(1015): @ java.lang.reflect.method.invoke(method.java:525) 06-22 09:08:58.114: e/androidruntime(1015): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:737) 06-22 09:08:58.114: e/androidruntime(1015): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:553) 06-22 09:08:58.114: e/androidruntime(1015): @ dalvik.system.nativestart.main(native method) 06-22 09:08:58.114: e/androidruntime(1015): caused by: java.lang.nullpointerexception 06-22 09:08:58.114: e/androidruntime(1015): @ com.example.spec1readertest.mainactivity.onstart(mainactivity.java:89) 06-22 09:08:58.114: e/androidruntime(1015): @ android.app.instrumentation.callactivityonstart(instrumentation.java:1171) 06-22 09:08:58.114: e/androidruntime(1015): @ android.app.activity.performstart(activity.java:5143) 06-22 09:08:58.114: e/androidruntime(1015): @ android.app.activitythread.performlaunchactivity(activitythread.java:2184) 06-22 09:08:58.114: e/androidruntime(1015): ... 11 more
this main activity.java file
package com.example.spec1readertest; import java.io.bufferedreader; import java.io.file; import java.io.fileinputstream; import java.io.filenotfoundexception; import java.io.filereader; import java.io.ioexception; import java.io.inputstreamreader; import org.achartengine.graphicalview; import android.app.activity; import android.os.bundle; import android.os.environment; import android.view.menu; import android.view.menuitem; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.edittext; import android.widget.linearlayout; import android.widget.toast; public class mainactivity extends activity { scattergraphplot scatter; graphicalview view; linearlayout layout; edittext filename; string filepath; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); filename = (edittext) findviewbyid(r.id.filename); // initialize loadspec btn button loadspec = (button) findviewbyid(r.id.button2); loadspec.setonclicklistener(new onclicklistener() { public void onclick(view v) { // filename input filepath =filename.gettext().tostring(); //set file path seek { filepath = "/sdcard/"+filepath+".txt"; bufferedreader br = new bufferedreader(new filereader(filepath)); string specdata = ""; int specval; int channelval=1; while ((specdata = br.readline()) != null) { // method converting text read file integer specval=scatter.stringtonumber(specdata); // adding points xyseries scatter.addpoints(channelval, specval); //repainting view; view.repaint(); //setting specdata string empty string specdata=""; //incrementing channel value channelval++; } } grab (ioexception e) { toast.maketext(getbasecontext(),"file not found",toast.length_short).show(); } } }); // initialize exit button button exit = (button) findviewbyid(r.id.button3); exit.setonclicklistener(new onclicklistener() { public void onclick(view v) { finish(); // exits application } }); } protected void onstart() { super.onstart(); view = scatter.getview(this); layout = (linearlayout) findviewbyid(r.id.chart); layout.addview(view); } }
this scattergraphplot.java file utilize plotting graph
public scattergraphplot() { // adding series xymultiple series dataset dataset.addseries(series1); // customizing points on scatter graph renderer.setcolor(color.green); renderer.setpointstyle(pointstyle.circle); renderer.setfillpoints(true); // customizing entire graph mrenderer.addseriesrenderer(renderer); mrenderer.setaxescolor(color.white); mrenderer.setbackgroundcolor(color.black); mrenderer.setapplybackgroundcolor(true); mrenderer.setzoombuttonsvisible(true); } public graphicalview getview(context context) { //returning graphical view main activity view = chartfactory.getscatterchartview(context, dataset, mrenderer); homecoming view; } public void addpoints(int x, int y) { chval = x; specval = y; //add points series1 series1.add(chval, specval); } //this method converts string number int stringtonumber(string str) { numconvstr = str; numconvstr=numconvstr.trim(); seek { retnum = integer.parseint(numconvstr); homecoming retnum; } //ignore grab block :assuming file error free grab (numberformatexception e) { homecoming 0; } } }
the xml file of app is
<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="${packagename}.${activityclass}" > <button android:id="@+id/button3" style="?android:attr/buttonstylesmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignbaseline="@+id/button2" android:layout_alignbottom="@+id/button2" android:layout_alignparentright="true" android:layout_marginright="20dp" android:text="@string/close" /> <edittext android:id="@+id/filename" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_alignparentright="true" android:layout_alignparenttop="true" android:layout_margintop="20dp" android:ems="10" android:hint="@string/filename" /> <button android:id="@+id/button2" style="?android:attr/buttonstylesmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentleft="true" android:layout_below="@+id/filename" android:layout_marginleft="22dp" android:layout_margintop="20dp" android:text="@string/loadspec" /> <linearlayout android:id="@+id/chart" android:layout_width="match_parent" android:layout_height="250dp" android:layout_alignparentbottom="true" android:layout_alignparentleft="true" android:layout_marginbottom="26dp" android:orientation="vertical" > </linearlayout> </relativelayout>
i hope help me out solving problem. in advance.
after inspecting stacktrace
caused by: java.lang.nullpointerexception @ com.example.spec1readertest.mainactivity.onstart(mainactivity.java:89)
i think field scatter
never assigend value. source of npe. next alter should trick.
protected void onstart() { super.onstart(); scatter = // initialize scatter here first! view = scatter.getview(this); layout = (linearlayout) findviewbyid(r.id.chart); layout.addview(view); }
android
No comments:
Post a Comment