NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | public class CategoryAdapter extends BaseAdapter { Context context; ArrayList<ModelCategory> model; LayoutInflater layoutInflater; public CategoryAdapter(Activity activity, ArrayList<ModelCategory> model) { this.model = model; this.context = activity; } @Override public int getCount() { return model.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (convertView == null) { viewHolder = new ViewHolder(); convertView = layoutInflater.inflate(R.layout.category_adapter, parent, false); viewHolder.imageView = (ImageView) convertView.findViewById(R.id.category_grid_image); viewHolder.textView = (TextView) convertView.findViewById(R.id.get_category_title); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.textView.setText(model.get(position).getCategoryName()); if(position<=3){ viewHolder.imageView.setImageBitmap(StringToBitMap(model.get(position).getCategoryImage())); } else { viewHolder.imageView.setImageBitmap(getBitmap(model.get(position).getCategoryImage())); } return convertView; } private class ViewHolder { public ImageView imageView; public TextView textView; } private Bitmap getBitmap(String path) { BitmapFactory.Options option = new BitmapFactory.Options(); option.inSampleSize = 8; Bitmap bitmap = BitmapFactory.decodeFile(path, option); Matrix matrix = new Matrix(); matrix.postRotate(getImageOrientation(path)); Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); Bitmap resized = Bitmap.createScaledBitmap(rotatedBitmap, 150, 150, true); return resized; } private static int getImageOrientation(String imagePath) { int rotate = 0; try { File imageFile = new File(imagePath); ExifInterface exif = new ExifInterface( imageFile.getAbsolutePath()); int orientation = exif.getAttributeInt( ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL); switch (orientation) { case ExifInterface.ORIENTATION_ROTATE_270: rotate = 270; break; case ExifInterface.ORIENTATION_ROTATE_180: rotate = 180; break; case ExifInterface.ORIENTATION_ROTATE_90: rotate = 90; break; } } catch (IOException e) { e.printStackTrace(); } return rotate; } public Bitmap StringToBitMap(String encodedString){ try { byte [] encodeByte=Base64.decode(encodedString, Base64.DEFAULT); Bitmap bitmap=BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length); return bitmap; } catch(Exception e) { e.getMessage(); return null; } } |
}
我得到
java.lang.NullPointerException: Attempt to invoke virtual method 'int
android.graphics.Bitmap.getWidth()' on a null object reference
at com.adapter.CategoryAdapter.getBitmap(CategoryAdapter.java:92)
at com.adapter.CategoryAdapter.getView(CategoryAdapter.java:75)
at android.widget.AbsListView.obtainView(AbsListView.java:2896)
at android.widget.GridView.makeAndAddView(GridView.java:1456)
at android.widget.GridView.makeRow(GridView.java:361)
at android.widget.GridView.fillDown(GridView.java:302)
at android.widget.GridView.fillFromTop(GridView.java:437)
at android.widget.GridView.layoutChildren(GridView.java:1284)
at android.widget.AbsListView.onLayout(AbsListView.java:2700)
at android.view.View.layout(View.java:16899)
at android.view.ViewGroup.layout(ViewGroup.java:5405)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1077)
at android.view.View.layout(View.java:16899)
at android.view.ViewGroup.layout(ViewGroup.java:5405)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:16899)
at android.view.ViewGroup.layout(ViewGroup.java:5405)
at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1043)
at android.view.View.layout(View.java:16899)
at android.view.ViewGroup.layout(ViewGroup.java:5405)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1702)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1556)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1465)
at android.view.View.layout(View.java:16899)
at android.view.ViewGroup.layout(ViewGroup.java:5405)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1077)
at android.view.View.layout(View.java:16899)
at android.view.ViewGroup.layout(ViewGroup.java:5405)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:16899)
at android.view.ViewGroup.layout(ViewGroup.java:5405)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1702)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1556)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1465)
at android.view.View.layout(View.java:16899)
at android.view.ViewGroup.layout(ViewGroup.java:5405)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:16899)
at android.view.ViewGroup.layout(ViewGroup.java:5405)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1702)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1556)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1465)
at android.view.View.layout(View.java:16899)
at android.view.ViewGroup.layout(ViewGroup.java:5405)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:16899)
at android.view.ViewGroup.layout(ViewGroup.java:5405)
我怎么解决这个问题?
错误跟踪显示错误发生
1 2 | Bitmap bitmap = BitmapFactory.decodeFile(path, option); Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); |
作为
1 2 3 | return The decoded bitmap, or null if the image data could not be decoded, or, if opts is non-null, if opts requested only the size be returned (in opts.outWidth and opts.outHeight) |
如果无法解码图像数据,则此方法将返回null。 请注意
我的问题是我在后台线程中调用'decodeFile'而返回null。 将该代码移动到主线程修复了问题。