[英]setBitmap throws null pointer exception
I am getting the image from socket as: 我从套接字获取图像为:
mByteArray = new char[size+1];
int count = 0;
r.read(mByteArray,0, size);
int nbrOfPixels = width*height;
Log.i("nbrOfPixels", String.valueOf(nbrOfPixels));
int pixels[] = new int[nbrOfPixels];
for(int i = 0; i < nbrOfPixels; i++) {
int r = mByteArray[3*i];
int g = mByteArray[3*i + 1];
int b = mByteArray[3*i + 2];
pixels[i] = Color.rgb(r, g, b);
}
bitmap = Bitmap.createBitmap(pixels, width, height, Bitmap.Config.ARGB_8888);
ImageView in oncreate is defined as: oncreate中的ImageView定义为:
imageView = (ImageView)findViewById(R.id.imgView);
and in Async task as: 在异步任务中为:
private class ImageTransfer extends AsyncTask<Void,Void,Bitmap> {
public Bitmap bitmap1 = null;
ImageView im_v = null;
public ImageTransfer(ImageView view){
this.im_v= view;
}
@Override
protected Bitmap doInBackground(Void... params) {
try {
bitmap1 = doItOnServer();
} catch (Exception e) {
Log.v("Exception", e.getMessage());
}
return bitmap1;
}
When I try to display the image in Async task it throws null pointer Exception 当我尝试在异步任务中显示图像时,它将引发空指针异常
protected void onPostExecute(Bitmap result) {
try {
if (bitmap1 != null) {
im_v.setImageBitmap(result);
} else {
Log.v("Error reading bitmap", "error");
}
} catch (Exception e) {
Log.e("OnPost Exec", "Exception", e);
}
}
Log captured for the caught exception is : 为捕获的异常捕获的日志为:
3166-3166/junaidyounas.makerprojectjava E/OnPost Exec﹕ Exception
java.lang.NullPointerException
at junaidyounas.makerprojectjava.OpenCVSelecter$ImageTransfer.onPostExecute(OpenCVSelecter.java:639)
at junaidyounas.makerprojectjava.OpenCVSelecter$ImageTransfer.onPostExecute(OpenCVSelecter.java:615)
at android.os.AsyncTask.finish(AsyncTask.java:677)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:690)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:149)
at android.app.ActivityThread.main(ActivityThread.java:5045)
at java.lang.reflect.Method.invokeNative(Native Method).....
I just fixed code but I think you should post method doItOnServer(): 我只是固定了代码,但我认为您应该发布方法doItOnServer():
protected void onPostExecute(Bitmap result) {
try {
if (result != null) {
im_v.setImageBitmap(result);
} else {
Log.v("Error reading bitmap", "error");
}
} catch (Exception e) {
Log.e("OnPost Exec", "Exception", e);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.