android - Socket code throws NullPointerException -


hi frends im working on android final year project based on sockets..im using ssynctask connect socket etc..everything works fine, since i'm using asynctask create socket connection ... socket works fine in doinbackground() method, when try send sensor data theonsensorchanged() method, null pointer exception. don't know went wrong. in short socket returns null outside asynctask class...can 1 me ?

here code:

package com.example.sensorsmart;  import java.io.bufferedreader; import java.io.bufferedwriter; import java.io.file; import java.io.filewriter; import java.io.ioexception; import java.io.inputstreamreader; import java.io.printwriter; import java.net.serversocket; import java.net.socket;  import android.app.activity; import android.content.context; import android.hardware.sensor; import android.hardware.sensorevent; import android.hardware.sensoreventlistener; import android.hardware.sensormanager; import android.os.asynctask; import android.os.bundle; import android.util.log; import android.view.menu; import android.view.view; import android.widget.textview; import android.widget.toast;  public class mainactivity extends activity implements sensoreventlistener{   private static final int serverport = 8222; private static final string server_ip = "192.168.0.101"; private sensormanager msensormanager; private sensor maccelerometer; private   textview tv ; public serversocket serversocket=null; public socket socket = null; public bufferedreader in ; public bufferedwriter out; public printwriter pw ; public filewriter writer=null;  @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); new mytask().execute(); msensormanager = (sensormanager)getsystemservice(context.sensor_service); maccelerometer msensormanager.getdefaultsensor(sensor.type_accelerometer);    msensormanager.registerlistener(this, maccelerometer,sensormanager.sensor_delay_normal);  } public void onstopclick(view view) { msensormanager.unregisterlistener(this);}  private class mytask extends asynctask<void, void, void> { @override protected void doinbackground(void... arg0) {  try { serversocket = new serversocket(8222); } catch (ioexception e) { e.printstacktrace(); } try { socket=serversocket.accept(); log.i("tcpserver", "connected"); in = new bufferedreader(new inputstreamreader(socket.getinputstream())); pw = new printwriter(socket.getoutputstream(),true); if(!in.ready()) { log.i("tcpserver", "reader not ready"); }  final  string g; final string c; string b = null; log.i("tcpserver", "going"); g=in.readline(); runonuithread(new runnable() { public void run() { toast.maketext(getapplicationcontext(),g, toast.length_long).show(); }  });  } catch (ioexception e) { e.printstacktrace(); string  response = e.getcause().tostring(); log.i("tcp",response); } return null; }  }   @override public void onsensorchanged(sensorevent event) { float x = event.values[0]; float y = event.values[1]; float z = event.values[2]; pw.write("g");  //null point exception throws here } } 

here log cat :

02-06 11:31:54.250: e/androidruntime(4108): fatal exception: main 02-06 11:31:54.250: e/androidruntime(4108): java.lang.nullpointerexception 02-06 11:31:54.250: e/androidruntime(4108):     @    com.example.sensorsmart.mainactivity.onsensorchanged(mainactivity.java:196) 02-06 11:31:54.250: e/androidruntime(4108):     @     android.hardware.systemsensormanager$listenerdelegate$1.handlemessage(systemsensormanager.java:204) 02-06 11:31:54.250: e/androidruntime(4108):     @ android.os.handler.dispatchmessage(handler.java:99) 02-06 11:31:54.250: e/androidruntime(4108):     @ android.os.looper.loop(looper.java:137) 02-06 11:31:54.250: e/androidruntime(4108):     @ android.app.activitythread.main(activitythread.java:4759) 02-06 11:31:54.250: e/androidruntime(4108):     @ java.lang.reflect.method.invokenative(native method) 02-06 11:31:54.250: e/androidruntime(4108):     @ java.lang.reflect.method.invoke(method.java:511) 02-06 11:31:54.250: e/androidruntime(4108):     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:791) 02-06 11:31:54.250: e/androidruntime(4108):     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:558) 02-06 11:31:54.250: e/androidruntime(4108):     @ dalvik.system.nativestart.main(native method) 

here

pw.write("g");  //null point exception throws here 

because creating different object of printwriter same name inside doinbackground instead of initializing pw. as:

 ....  log.i("tcpserver", "connected");  in = new bufferedreader(new inputstreamreader(socket.getinputstream()));  pw = new printwriter(socket.getoutputstream(),true);  //initializing `pw` here  if(!in.ready())  {    log.i("tcpserver", "reader not ready");   }  .... 

Comments

Popular posts from this blog

python - Subclassed QStyledItemDelegate ignores Stylesheet -

java - HttpClient 3.1 Connection pooling vs HttpClient 4.3.2 -

SQL: Divide the sum of values in one table with the count of rows in another -